Django唯一的URL重定向问题

时间:2015-10-05 04:12:59

标签: php python django forms url

尝试从提交后重定向到编辑更多字段时出现问题 还可以创建提交的超链接。

使用重定向提交表单时,我会收到以下错误。 如果我将带有渲染请求的表单提交到另一个页面,表单就可以保存。

  

请求方法:POST请求   网址:http://127.0.0.1:8000/resourcelib/add_pricebook Django   版本:1.8.4异常类型:NoReverseMatch异常值:   反向' detail_pricebook'参数'()'和关键字   争论' {' p_id':22L}'未找到。尝试了0种模式:[]

我的Model.py

class PriceBook(models.Model):
    pricebook_id = models.AutoField(primary_key=True)
    pricebook_name = models.CharField(max_length=255,verbose_name='PriceBook Name')
    discription = models.TextField(verbose_name='Discription')
    date_created = models.DateTimeField(auto_now_add=True, blank=True)
    active = models.SmallIntegerField(max_length=1, blank=True)

    def __unicode__(self):
        return self.pricebook_name

view.py

 def new_pricebook(request):
    if request.method == "POST":
        pricebook_form = PricebookForm(request.POST)
        if pricebook_form.is_valid():
                post = pricebook_form.save(commit=False)
                post.save()
                #return render(request, 'resourcelib/thanks.html',)
                return redirect('detail_pricebook', p_id=post.pricebook_id)

    else:
        pricebook_form = PricebookForm()
        return render(request, 'resourcelib/pricebook_add.html', {'pricebook_form': pricebook_form})

def detail_pricebook(request, p_id):
    pricebook_from = get_object_or_404(PriceBook, pk=p_id)
    return render(request, 'resourcelib/pricebook_detail.html', {'pricebook_from':pricebook_from})

url.py

url(r'^add_pricebook', views.new_pricebook, name='new_pricebook'),
    url(r'^list_pricebook', views.list_pricebook, name='list_pricebook'),
    url(r'^detail_pricebook/(?P<p_id>[0-9]+)/$', views.detail_pricebook, name='detail_pricebook'),

我不相信它在url文件中,因为如果我浏览条目,我没有错误,例如。 127.0.0.1:8000/resourcelib/detail_pricebook/3/ - 工作正常

但是我无法使用我的链接,我可以列出我的条目。但是当你点击它刚刚出现的链接时,链接不会从下面的代码中起作用127.0.0.1:8000/resourcelib/%7B%%20url%20'detail_pricebook'%20p_id.pk% 7D

{% if pricebooks %}
    <ul>
    {% for pricebook in pricebooks %}
        <li><h1><a href="{% url 'detail_pricebook' p_id.pk}">{{ pricebook.pricebook_name }}</a></h1></li>
    {% endfor %}
    </ul>
{% else %}
    <p>No price books have been created.</p>
{% endif %}
{% endblock %}

非常感谢任何帮助

2 个答案:

答案 0 :(得分:0)

url标记中缺少

%。要小心点。

答案 1 :(得分:0)

感谢@ozgur,我认为我对pk有错误的引用。我能够解决这个问题。我在主要项目urls.py上有一个名称空间...可能是我应该给的信息,忘了我用过这个cookiecutter

url(r'^resourcelib/', include('oneworksite.resourcelib.urls', namespace='resource')),

因此我可以使链接与

一起使用
<a href="{% url 'resource:detail_pricebook' pricebook.pk %}">{{ pricebook.pricebook_name }}</a>

然后在我的重定向中,我改为 return redirect('resource:detail_pricebook', p_id=post.pk)