因此,基本上,我有一个由我的视图调用的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.
有关如何解决此运行时错误的任何想法
答案 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 或其他东西自动添加斜线。