reverse()不工作

2024-05-19 07:41:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试着把身份证倒过来。但它不起作用。我得到了这个错误

反转为'注册浏览。谢谢找不到“with arguments”(20,)“和关键字参数“{}”。在

这是我的视图.py公司名称:

from django.http import HttpResponse, Http404, HttpResponseRedirect
from django.core.urlresolvers import reverse
from reg.models import registration, registrationform
from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext


def registration(request):
    if request.method == 'POST':
        form = registrationform(request.POST)
        if form.is_valid():
            data = form.save()
            id = data.id
            return thanks(request,id)
    else:
        form = registrationform()
    return render_to_response('registration.html', {'form' : form}, context_instance=RequestContext(request))

def thanks(request, id):
    p = get_object_or_404(registration, pk=id)
    return render_to_response('thanks.html', {'reg' : p})

这是我的网址.py公司名称:

^{pr2}$

给你谢谢.html公司名称:

<html>
<body>
<p>Thank you for registration mr.{{reg.username}}</p>
</body>
</html>

我还展示了我的模型.py公司名称:

from django.db import models
from django.forms import ModelForm

class registration(models.Model):
        username = models.CharField(max_length=100)
    password = models.CharField(max_length=100)

        def __unicode__(self):
        return self.name

class registrationform(ModelForm):
    class Meta:
        model = registration

谢谢。在


Tags: djangofrompyimportform名称idreturn
2条回答

这条线

return HttpResponseRedirect(reverse('reg.views.thanks', args=(id,)))

正在尝试构造指向视图reg.views.thanks的url,并将id变量用作参数。在

这条线进来了网址.py在

^{pr2}$

没有该参数的任何位置。在

首先,你需要弄清楚的是你是否真的想发送一个HTTP重定向到浏览器,让它转到“谢谢”页面。如果你真的这么做了,那么你需要一种在URL中发送id的方法。您可以像@moguzalp建议的那样,将其作为URL路径本身的一部分,或者将其放入查询字符串中,比如

/thanks/?id=12345

或者你可以做其他的事情,比如在用户的会话中存储id,当用户请求感谢页面时将其取出。不过,这有点复杂。在

如果您实际上不需要发出HTTP重定向,那么就没有什么可以阻止您从视图函数内部调用thanks()函数,如下所示:

def registration(request):
    if request.method == 'POST':
        form = registrationform(request.POST)
        if form.is_valid():
            data = form.save()
            id = data.id
            return thanks(request, id)
    else:
        form = registrationform()
    return render_to_response('registration.html', {'form' : form}, context_instance=RequestContext(request))

URL不会在浏览器中更改,但将使用正确的ID,并且不需要出现在URL、查询参数或会话中的任何其他位置

从这个链接(django教程):
https://docs.djangoproject.com/en/dev/topics/http/urls/#django.core.urlresolvers.reverse

示例:

def myview(request):
    return HttpResponseRedirect(reverse('arch-summary', args=[1945]))

所以你的代码是:

在网址.py公司名称:

^{pr2}$

在您的职能:

return HttpResponseRedirect(reverse('my_thanks_url', args=[id]))

相关问题 更多 >

    热门问题