如何解决Django POST URL错误APPEND_SLASH

vhmi4jdf  于 2023-01-31  发布在  Go
关注(0)|答案(2)|浏览(116)

我正在尝试将我的表单POST数据放到下一页,但出现错误
您通过POST调用了这个URL,但是该URL没有以斜杠结尾,并且您设置了APPEND_SLASH。Django在维护POST数据的同时无法重定向到斜杠URL。更改表单以指向127.0.0.1:8000/robustSearch/(注意尾部斜杠),或者在Django设置中设置APPEND_SLASH=False。
我的urls.py文件

from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='home'),
    path('search_titles', views.searchTitles, name='search_titles'),
    path('stats/', views.dataStats, name='stats'),

    path('robustSearch/', views.robustSearch, name='robustSearch'),
]

我的views.py文件

def robustSearch(request):
    
    if request.method == 'POST':
        file = request.FILES['titles_file']
        df = pd.read_csv(file)
        df.dropna(inplace=True)
        counting = df.counts()
    context={
        'counting': counting,
    }
    return render(request, 'result_titles.html', context)

我的POST表单文件是

<form action="robustSearch" method="POST" enctype="multipart/form-data">
{% csrf_token %}
<div class="form-inline">
     <input type="file" name="titles_file" class="form-control input-sm mr-2">
     <button type="submit" class="btn btn-primary">Search</button>
</div>  
</form>

任何人都可以指出我做错了什么,或者我怎样才能实现这个目标

jmp7cifd

jmp7cifd1#

URL应为:

<form action="/robustSearch/" method="POST" enctype="multipart/form-data">
  …
</form>

但是最好使用**{% url … %}**模板标签[Django-doc]:

<form action="{% url 'robustSearch' %}" method="POST" enctype="multipart/form-data">
  …
</form>
ux6nzvsh

ux6nzvsh2#

你的链接中缺少"/";这会导致该错误
在您的URL中

path('robustSearch/', views.robustSearch, name='robustSearch'),

在你的html中

action='robustSearch'

应该是

action='robustSearch/'

或者您可以咨询django - url with automatic slash adding

相关问题