【发布时间】:2020-07-10 21:20:22
【问题描述】:
我正在尝试在我的 django 网站上添加一个简单的搜索表单。当我点击搜索按钮时,我被重定向到 new_search.html 页面(应该如此),但该页面没有显示任何结果。 感谢您的帮助!
代码是这样的:
我有一个主页,我在其中放置了这样的搜索表单:
<form method="get" action="{% url 'new_search' %}">
{%csrf_token%}
<input type="text" name="srh" class= "form-control" placeholder="Search">
<button type="submit" name="submit">Search</button>
</form>
当用户搜索某些内容时,结果应显示在 new_search.html 页面中。 我在views.py中写的函数是这样的:
def new_search(request):
if request.method == 'GET':
srch = request.GET.get('srh')
if srch:
sr = Info.objects.filter(Q(band__icontains=srch) | Q(disco__icontains=srch))
if sr:
return render(request, 'new_search.html', {'sr':sr})
else:
messages.error(request, 'no results')
else:
return render(request, 'new_search')
return render(request, 'new_search.html')
new_search.html 页面是这样的:
<div>
{% if sr %}
{% for k in sr %}
<table width="200px">
<tr><td>Band</td><td>{{k.band}}</td></tr>
<tr><td>Album</td><td>{{k.disco}}</td></tr>
</table>
{%endfor%}
{%endif%}
</div>
model.py 是这样的:
class Info(models.Model):
band = models.CharField(max_length=200, help_text="Write Here")
disco = models.CharField(max_length=200, help_text="Write Here")
etichetta_p = models.CharField(max_length=200, help_text="Write Here")
etichetta_d = models.CharField(max_length=200, help_text="Write Here")
matrice = models.CharField(max_length=200, help_text="Write Here")
anno = models.PositiveIntegerField(default=0)
cover = models.ImageField(upload_to='images/')
def __str__(self):
return self.band
urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('search.urls')),
path('accounts/', include('django.contrib.auth.urls')),
应用 urls.py
urlpatterns = [
path('', homeView.as_view(), name='home'),
path('anno', views.anno, name='anno'),
path('band/', bandView.as_view(), name='band'),
path('album/', albumView.as_view(), name='album'),
path('add/create', views.AddInfo.as_view(), name='add_create'),
path('signup/', core_views.signup, name='signup'),
path('new_search/', new_searchView.as_view(), name='new_search'),
]
【问题讨论】:
-
为什么在表单中使用
GET方法? -
因为它给了我一个 POST 错误,但我要修复它并使用 POST 方法@errata
-
日志中有错误吗?可以发一下吗?