如何修复django appendslash运行时错误?

时间:2018-07-10 20:18:23

标签: django

因此,基本上,我有一个由我的视图调用的pdf.html。

我在pdf.html中的表格如下:

<form action="{% url "soapdf:submitemail" %}" method="post">
    {%  csrf_token %}
    {{ emailform }}
    <input type="submit" value="Submit">
</form>

views.py上的相应功能如下:

def submitemail(request):
    if(request.method=='POST'):

     return HttpResponse(request.POST['text_email'])
    else:
        return HttpResponse("false")

,我的urls.py如下所示: app_name ='soapdf'#使用它为应用程序命名空间,以便您可以使用url标记方案

urlpatterns = [ 
    path('',views.get_pdf,name='get_pdf'),
    path('submitemail/',views.submitemail,name='submitemail')
]

但是,单击提交按钮时,出现以下错误。我的重定向带有斜线,但仍然无法正常工作。

RuntimeError at /submitemail
You called this URL via POST, but the URL doesn't end in a slash and you have APPEND_SLASH set. Django can't redirect to the slash URL while maintaining POST data. Change your form to point to localhost:8000/submitemail/ (note the trailing slash), or set APPEND_SLASH=False in your Django settings.

有关如何解决此运行时错误的任何想法

2 个答案:

答案 0 :(得分:0)

在包含此get_pdf网址的主urls.py中添加斜杠

我认为就像

urlpatterns =[
    path('get_pdf',include('yourapp.urls')),

]

它将是

urlpatterns =[
    path('get_pdf/',include('yourapp.urls')),

]

答案 1 :(得分:0)

如果 SEO 不重要,您可以使用或不使用斜杠。在 Django 3.X 中:

from django.urls import re_path

urlpatterns = [ 
    re_path('^/?$',views.get_pdf,name='get_pdf'),
    re_path('^submitemail/?$',views.submitemail,name='submitemail')
]

但是如果 SEO 很重要,最好通过 Nginx 或其他东西自动添加斜线。