Django观点和URl的观点

时间:2014-06-12 01:21:17

标签: python django

我的网址在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'),
)

1 个答案:

答案 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,我只是写了相对网址。