我的网址在Django中看起来有问题。我有这样的观点:
def updatetext(request, fb_id):
Account.objects.filter(id=fb_id).update(display_hashtag=request.POST['hashtag'])
fb = get_object_or_404(Account, pk=fb_id)
return render(request, 'myapp/account.html', {
'success_message': "Success: Settings updated.",
'user': fb
})
当用户点击URL更新文本时,他们会重定向到帐户页面,但URL看起来像'account / updatetext /'。我希望它只是'帐号/'。
我将如何在Django中执行此操作。我将使用什么来代替渲染仍然允许我将请求,'success_message'和'user'传递给返回的页面,但不包含URL中的'updatetext'?
[编辑]
urls.py文件如下所示:
from django.conf.urls import patterns, url
from myapp import views
urlpatterns = patterns('',
url(r'^home/$', views.index, name='index'),
url(r'^(?P<fb_id>\d+)/$', views.account, name='account'),
url(r'^(?P<fb_id>\d+)/updatetext/$', views.updatetext, name='updatetext'),
url(r'^(?P<fb_id>\d+)/updatepages/$', views.updatepages, name='updatepages'),
url(r'^login/$', views.user_login, name='login'),
url(r'^logout/$', views.user_logout, name='logout'),
url(r'^admin/$', views.useradmin, name='admin'),
)
答案 0 :(得分:1)
您需要将用户重定向到'/ account /'。而不是回复render
的电话,您可以执行以下操作:
from django.http import HttpResponseRedirect
def updatetext(request, fb_id):
Account.objects.filter(id=fb_id).update(display_hashtag=request.POST['hashtag'])
fb = get_object_or_404(Account, pk=fb_id)
return HttpResponseRedirect(reverse('account', kwargs={"fb_id": fb_id}))
但是,最好将reverse
的调用传递给HttpResponseRedirect
构造函数,但由于我不知道你的urls.py,我只是写了相对网址。