允许用户编辑配置文件信息并提交它,从而导致页面重定向到配置文件页面。

时间:2017-08-30 21:14:13

标签: python django url jinja2

在django中,我试图允许该用户编辑他/她的个人资料信息,按提交,并将更改反映在他/她的个人资料页面中。

这是代码:

在我的应用程序的views.py文档中

  

允许用户查看个人资料页面

def view_profile(request):

    var = { 'user' : request.user }

    return render(request, 'accounts/profile.html', var)
  

允许用户编辑个人资料页面

def edit_profile(request):

    if request.method == 'POST':
        form = UserChangeForm(request.POST, instance=request.user)

        if form.is_valid():
            form.save()

            return redirect('account/profile')

    else:

        form = UserChangeForm(instance=request.user)

        var = {'form' : form }
        return render(request, 'accounts/edit_profile.html', var)

这是urls.py文件

  

导入模块

from django.conf.urls import url
from . import views
  

定义网址

urlpatterns = [

url(r'^profile/$', views.view_profile, name = 'view_profile'),  
url(r'^profile/edit/$', views.edit_profile, name = 'edit_profile')

]

这是edit_profile

{% extends 'base.html' %}


{%  block head %}

<title>{{ user }}</title>

{% endblock %}


{%  block body %}

<div class = "container">

<form method = "post">

    {% csrf_token %}

    {{ form.as_p }}

    <button class = "btn btn-default" type="submit">Submit</button>

</form>

</div>

{% endblock %}

当我在edit_profile.html页面上编辑用户模型并提交时,会重定向

来自:

http://127.0.0.1:8000/account/profile/edit/

致:

http://127.0.0.1:8000/account/profile/edit/account/profile

后一个网址不准确,应该重定向

致:

http://127.0.0.1:8000/account/profile

这就是该页面的外观

enter image description here

1 个答案:

答案 0 :(得分:0)

重定向时,应包含一个前导斜杠,使其成为绝对网址:

return redirect('/account/profile')

您可以使用URL模式名称来避免对网址进行硬编码。 redirect快捷方式将为您反转网址:

return redirect('view_profile')