亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Django 無法搜索“不允許的方法”

Django 無法搜索“不允許的方法”

三國紛爭 2024-01-15 15:33:46
我是 Django 新手,目前正在為我的朋友做一個網站。他希望我制作一個系統,用戶可以在其中搜索數據庫,網站根據序列號提供相關項目。我按照以下網站的教程進行操作:https://learndjango.com/tutorials/django-search-tutorial來了解如何進行數據庫搜索,這很有幫助,但我仍然遇到問題:我的搜索欄有效,并且結果頁面也可以工作,但只有當我自己在搜索欄上手動輸入查詢時才有效(例如 results/?q=number1)。但是,當我使用輸入欄和提交按鈕進行搜索時,它會將我發送到 /results/ 頁面,并且該頁面給出以下內容:該頁面無法正常工作如果問題仍然存在,請聯系網站所有者。HTTP 錯誤 405-當我打開 pycharm 查看終端中的錯誤時,它顯示:Method Not Allowed (POST): /result/Method Not Allowed: /result/[27/Oct/2020 20:06:02] "POST /result/ HTTP/1.1" 405 0這是我的代碼(python3.7,pycharm)網站/網址:from . import viewsfrom django.urls import pathfrom django.contrib.auth import views as auth_viewsurlpatterns = [    path('register/',views.UserFormView.as_view(), name='register'),    path('login/', auth_views.LoginView.as_view(), name='login'),    path('', views.IndexViews.as_view(), name='index'),    path('scan/', views.ScanView.as_view(), name='scan'),    path('result/', views.SearchResultsView.as_view(), name='result'),]網站/瀏覽量:class IndexViews(generic.ListView):    template_name = "websites/index.html"    context_object_name = "object_list"    def get_queryset(self):        return Website.objects.all()class ScanView(TemplateView):    form_class = SerialFrom    template_name = 'websites/scan.html'class SearchResultsView(ListView):    model = SerialNumber    template_name = 'websites/result.html'    def get_queryset(self):  # new        query = self.request.GET.get('q')        context = self.get_context_data(object=self.object)        object_list = SerialNumber.objects.filter(            Q(number__iexact=query)        )        return object_list掃描.html: {% extends 'websites/base.html' %}{% block albums_active %}active{% endblock %}{% block body %}<head>    <meta charset="UTF-8">    <title>Scan</title>    <link rel="stylesheet" href="style.css"></head>感謝您花時間閱讀,請幫助我,我真的需要這樣做。
查看完整描述

1 回答

?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

默認情況下, [?ListViewDjango-doc]不會實現 POST 請求的處理程序。搜索通常通過 GET 請求完成,因此您應該使用:

<form class="box" action="{% url 'result' %}" method="GET">

? ? <h1>Product Check</h1>

? ? <p> Please enter the serial id of your product to check it.</p>

? ? <input type="text" name="q" placeholder="Serial Number">

? ? <input type="submit" placeholder="Check">

</form>

此外<input type="submit">不應該有name="q"屬性。

您還可以將文本框的類型更改為type="search"[mozilla] :

<form class="box" action="{% url 'result' %}" method="GET">

? ? <h1>Product Check</h1>

? ? <p> Please enter the serial id of your product to check it.</p>

? ? <input type="search" name="q" placeholder="Serial Number">

? ? <input type="submit" placeholder="Check">

</form>


查看完整回答
反對 回復 2024-01-15
  • 1 回答
  • 0 關注
  • 186 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號