【发布时间】:2016-03-16 21:56:21
【问题描述】:
我是非常新的 Django 和一般的 Web 开发空间。在我的模板上,我列出了所有数据库条目,以及一个查询数据库并返回任何结果的搜索栏。当没有结果时,我需要帮助来显示消息。目前,当没有结果时,页面只是重新加载。我已经尝试实现messages framework,但我无法让它工作(似乎我必须将它定向到另一个页面)。在views.py 中,我有一个if 语句来决定当没有结果时要做什么,我只是不知道如何生成与查询出现在同一页面上的语句。我尝试过扩展模板,并将变量放在views.py 中,但它们会永久保留在页面中。我也考虑过 Javascript,但我还没有学过。我不喜欢使用 Haystack 或 DjangoSearch,因为我认为这很简单。如果您需要任何其他信息,请告诉我。非常感谢您的帮助!
我的意见.py
from django.http import Http404, HttpRequest
from django.contrib import messages
from vendor_db.models import Itemo
from django.db.models import Q
from django.shortcuts import HttpResponse, HttpResponseRedirect, render_to_response, render, redirect, get_object_or_404
def vendors(request):
items = Itemo.objects.all()
var_2 = request.GET.get("q")
if var_2:
items = items.filter(Vendor_Name__icontains=var_2)
if not items:
messages.info(request, "No Results Found")
return none
people
else:
items
context = {
'items': items,
}
return render(request, 'vendor_db/vendors.html', context,())
def vendors_detail(request, id):
try:
item = Itemo.objects.get(id=id)
except Itemo.DoesNotExist:
raise Http404('This item does not exist')
return render(request, 'vendor_db/vendors_detail.html', {
'item': item,
})
我的供应商模板:
{% extends "base.html" %}
{% block content %}
{% load static %}
<h2>All Vendors</h2>
<h3>Search</h3>
<form method='GET' action=''>
<input type='text' name="q" placeholder='Search Vendors'/>
<input type='submit' value='Search'/>
</form>
<form action="{% url 'vendors' %}">
<input type="submit" value="Reset">
</form>
{% if messages %}
{% for message in messages %}
{{ message }}
{% endfor %}
{% endif %}
<h3>Sort by:</h3>
<a href="{% url 'product_name_asc' %}">Product Name</a>
<ul>
{% for stuff in items %}
<li>
<a href="{% url 'vendors_detail' stuff.id %}">
{{ stuff.Product_Name|capfirst }}
</a>
</li>
{% endfor %}
</ul>
{% endblock %}
urls.py
from django.conf.urls import include, url
from django.contrib import admin
from vendor_db import views
urlpatterns = [
url(r'^vendors/$', views.vendors, name='vendors'),
url(r'^vendors/(?P<id>\d+)/', views.vendors_detail, name='vendors_detail'),
]
【问题讨论】:
标签: python django django-forms django-templates django-views