在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
这就是该页面的外观
答案 0 :(得分:0)
重定向时,应包含一个前导斜杠,使其成为绝对网址:
return redirect('/account/profile')
您可以使用URL模式名称来避免对网址进行硬编码。 redirect
快捷方式将为您反转网址:
return redirect('view_profile')