在嘗試使用 method="POST" 和鏈接到應該觸發視圖以呈現不同模板的 url 的操作創建一個簡單的搜索表單時,我遇到它無法正常作業,它所做的只是將 csrf 上的標簽標記到我的索引 url 和就像我正在使用 GET 而不是 POST 任何關于為什么的想法?
網址:
http://127.0.0.1:8000/bugtracker/?csrfmiddlewaretoken=jdGcvGb8pioQutLhDOL8y6zbK7DW6XSErTYQ8zHOI8W1fAXf8V6NFoFmzXRIvC3d&searched=
看法:
@login_required(login_url='login_register')
def search_site(request):
if request.method == "POST":
searched = request.POST['searched']
context = {
'searched': searched
}
return render(request, 'bugs/search_site.html', context)
else:
return render(request, 'bugs/search_site.html')
網址:
path('search_site/', views.search_site, name='search_site'),
搜索欄模板:
<div class="input-group">
<form method="POST" action="{% url 'search_site' %}">
{% csrf_token %}
<input class="form-control" type="search" placeholder="Search for..." aria-label="Search for..." name="searched">
<button class="btn btn-primary" type="submit"><i class="fas fa-search"></i></button>
</form>
</div>
搜索結果模板:
{% extends 'bugs/base.html' %}
{% block content %}
<div class="container-fluid px-4">
{% if searched %}
<h4 class="mt-4">results for {{ searched }}</h4>
{% endif %}
</div>
{% endblock %}
我嘗試更改獲取方法,嘗試更改我的 url 和我的視圖無濟于事。并洗掉 crf 只會使 url 標簽成為 ? 進入索引似乎它根本沒有呼叫任何東西。
uj5u.com熱心網友回復:
我可以提供兩個建議,第一個在 else 條件之外渲染,第二個searched通過列印來查看是否有任何價值。
@login_required(login_url='login_register')
def search_site(request):
if request.method == "POST":
searched = request.POST['searched']
print(f"searched value --> {searched}")
context = {
'searched': searched
}
return render(request, 'bugs/search_site.html', context)
return render(request, 'bugs/search_site.html')
搜索結果模板:
{% extends 'bugs/base.html' %}
{% block content %}
<div class="container-fluid px-4">
{% if searched %}
<h4 class="mt-4">results for {{ searched }}</h4>
{% else %}
<p>No value has come.</p>
{% endif %}
</div>
{% endblock %}
我也認為它應該是POSTMethod check 中的另一個模板,您提供search_site.html的可能是search_result.html.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/526091.html
標籤:Pythondjangodjango-viewsdjango-模板django 网址
上一篇:Django如何通過股票符號超鏈接到靜態檔案夾中的影像?
下一篇:動態列如何分隔樣式
