Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django视图和URl';s_Python_Django - Fatal编程技术网

Python Django视图和URl';s

Python Django视图和URl';s,python,django,Python,Django,我的URL在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', {

我的URL在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
    })
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'),
)
当用户单击URL更新文本时,他们会被重定向到帐户页面,但URL看起来像“account/updatetext/”。我希望它只是“帐户/”

在Django我该怎么做。我将使用什么来代替呈现,它仍然允许我将请求、“success_message”和“user”传递到返回的页面中,但不在URL中包含“updatetext”

[编辑]

url.py文件如下所示:

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
    })
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'),
)
来自django.conf.url导入模式,url
从myapp导入视图
urlpatterns=模式(“”,
url(r“^home/$”,views.index,name='index'),
url(r'^(?P\d+/$),views.account,name='account'),
url(r'^(?P\d+)/updatetext/$,views.updatetext,name='updatetext'),
url(r'^(?P\d+)/updatepages/$',views.updatepages,name='updatepages'),
url(r“^login/$”,views.user\u login,name='login'),
url(r“^logout/$”,views.user\u logout,name='logout'),
url(r“^admin/$”,views.useradmin,name='admin'),
)

您需要实际将用户重定向到“/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
构造函数中,但是因为我不知道你的url.py,所以我只编写了相对的url。

你的
url.py
看起来像什么?帐户/页面的url看起来像这样的“url(r'^(?p\d+/$”,views.account,name='account)“如何使用HttpResponseRedirect将‘success_message’和‘user’传递到页面?我更新了答案,将fb_id传递到反向调用中,该调用将生成正确的url。您需要通过
请求传递成功消息。会话
,或者您可以使用django的消息框架:。我想最后一种处理方法是将其作为URL中的查询参数传递给视图。@user2547755还有一件事,在收到
POST
请求后始终重定向用户。这可以防止用户在重新加载页面时发送两次请求(主要是意外),并在数据最初正确保存时防止重复数据或感知错误。谢谢@schillingt。你已经为我澄清了这件事。