Django中的HttpRequest after form方法?

2024-10-01 09:30:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我是django的新手,我不知道如何在提交后将站点重定向到主页。 我在这里读到,在其他地方我需要在方法中返回HttpResponseRedirect。 但我的表格看起来:

@login_required
#@staff_member_required
def hero_detail_create_view(request):
    #creating by form
    form = HeroCreateModelForm(request.POST or None)
    if form.is_valid():
        obj = form.save(commit=False)
        slugCreate = str.lower(form.cleaned_data.get('name') + "-" + form.cleaned_data.get('nickname'))
        obj.slug = slugCreate.replace(" ","")
        obj.user = request.user
        obj.save()
        form = HeroCreateModelForm()
    template_name='form.html'
    context = {'form':form}
    return render(request, template_name, context)

它创造了一个英雄。我需要重定向到主页后提交。 我该怎么做?我不能再加上第二次返程。我尝试创建一个新的方法来重定向,并在inside中引入了这个方法,但是当然没有成功

我的表单html:

{% extends "base.html" %}


{% block content %}

{% if title %}
  <h1>{{ title }}</h1>
{% endif %}

<form method='POST' action='.'> {% csrf_token %}
  {{ form.as_p }}
  <button type='submit'>Send</button>

</form>


{% endblock %}

Tags: 方法nameformobjifrequestsavehtml
3条回答
@login_required
def hero_detail_create_view(request):
    # creating by form
    form = HeroCreateModelForm(request.POST or None)
    if form.is_valid():
        obj = form.save(commit=False)
        slugCreate = str.lower(form.cleaned_data.get("name") + "-" + form.cleaned_data.get('nickname'))
        obj.slug = slugCreate.replace(" ","")
        obj.user = request.user
        obj.save()
        return redirect("home.html")

    template_name="form.html"
    context = {"form":form}
    return render(request, template_name, context)

处理get请求时,可以按以下方式执行:

@login_required
def hero_detail_create_view(request):
    if request.method == "POST":
        form = HeroCreateModelForm(request.POST or None)
        if form.is_valid():
            obj = form.save(commit=False)
            slugCreate = str.lower(form.cleaned_data.get('name') + "-" + form.cleaned_data.get('nickname'))
            obj.slug = slugCreate.replace(" ","")
            obj.user = request.user
            obj.save()
            return redirect('your_home_page')
    else:
        form = HeroCreateModelForm()
    return render(request, 'form.html', {'form':form})

保存对象后,可以redirect如下所示:

   obj.user = request.user
   obj.save()
   return redirect('you_main_page_url')

保存对象后不要调用窗体

相关问题 更多 >