Django 视图呈现奇怪的 url 路径

Posted

技术标签:

【中文标题】Django 视图呈现奇怪的 url 路径【英文标题】:Django views render odd url path 【发布时间】:2014-04-22 06:15:00 【问题描述】:

奇怪的问题。我完成了编辑用户配置文件的过程,然后最后将用户返回到配置文件详细信息页面,但我的 url 仍然带有 /edit。

基本上我可以编辑一个配置文件,将我带到正确保存的profile/edit,然后我加载配置文件详细信息页面,但是我的 url 路由没有改变。一个小问题,但很烦人。代码如下:

views.py

def index(request):
....
return render(request, "profile/details.html", 'user': user)

def edit(request):

user_obj = User.objects.get(pk=request.user.id)
user_pro_obj = UserProfile.objects.get(user=request.user.id)

if request.method == "POST":
  uform = UserForm(data = request.POST, instance=user_obj)
  pform = UserProfileForm(data = request.POST, instance=user_pro_obj)

  if uform.is_valid() and pform.is_valid():
    user = uform.save()
    profile = pform.save(commit=False)
    profile.user = user
    profile.save()

    user = get_object_or_404(User, id=request.user.id)
    return render(request, "profile/detail.html", 'user': user)

else:
  uform = UserForm(instance=user_obj)
  pform = UserProfileForm(instance=user_pro_obj)

return render(request, "profile/edit.html", 'uform': uform, 'pform': pform

urls.py

url(r'^$', views.index, name='profile_index'),
url(r'^edit$', views.edit, name='profile_edit'),

edit.py

<form action=% url 'profile_edit' % method="post">% csrf_token %
 uform.as_p 
 pform.as_p 
<input type="submit" value="Submit">

【问题讨论】:

【参考方案1】:

您无法自行更改浏览器中显示的 URL。您需要重定向到详细信息页面,而不是 rendering。喜欢:

return HttpResponseRedirect(my_success_url)

【讨论】:

以上是关于Django 视图呈现奇怪的 url 路径的主要内容,如果未能解决你的问题,请参考以下文章

与 Django 通用视图中的 pk 不同的 url 路径

当前路径具有子目录或 url 参数时,使用 AJAX 调用视图函数不起作用(Django)

django rest框架:在视图中获取url路径变量

django 2.2.5 URL 路径中的 URL 正则表达式

当url模式与模型名称相同时,Django管理员加载视图模板

在 Django 中将文件路径作为 URL 参数传递