django,这个搜索功能正在工作,但是数据没有显示在模板上。我是django的初学者。请帮帮我
view.py:
def search(request):
search_machinename = request.GET.get('q')
if (search_machinename is not None) and search_machinename:
machinename = Item.objects.filter(QuerySet(machinename__icontains=search_machinename) |
QuerySet(operationno__icontains=search_machinename))
if not machinename:
machinename = Item.objects.all()
context = {'machinename': machinename}
return render(request, 'usermaster/item-form.html', context)模板文件: item-form.html:此模板的网页
<form action="{{url.search}}" method='get' value='{{ request.get.q }}' enctype="multipart/form-data">
{% csrf_token %}
{{fields}}
<input type="text" name="q" value='{{ request.GET.q }}'>
<button type="submit">Search</button>
<table>
{% for data in machinename %}
<tr>
<td>{{ data.machine_name }}</td>
<td>{{ data.operation_no }}</td>
</tr>
{% endfor %}
</table>
</form>代码正在工作,但它不在网页上显示。
发布于 2022-01-01 09:00:05
您在Queryset或Q中拼错了模型字段名、operationno__icontains和machinename__icontains。
像这样改变它们:
# views.py
from django.shortcuts import render
from .models import Item
from django.db.models import Q
def search(request):
search_machine_name = request.GET.get('q')
context = {}
if (search_machine_name is not None) and search_machine_name:
machine_name = Item.objects.filter(Q(machine_name__icontains=search_machine_name) |
Q(operation_no__icontains=search_machine_name))
if not machine_name:
machine_name = Item.objects.all()
context['machine_name'] = machine_name
return render(request, 'usermaster/item-form.html', context)# templates/usermaster/item-form.html
<form action="{{url.search}}" method='get' value='{{ request.get.q }}' enctype="multipart/form-data">
{% csrf_token %}
{{fields}}
<input type="text" name="q" value='{{ request.GET.q }}'>
<button type="submit">Search</button>
<table>
{% for data in machine_name %}
<tr>
<td>{{ data.machine_name }}</td>
<td>{{ data.operation_no }}</td>
</tr>
{% endfor %}
</table>
</form># models.py
from django.db import models
class Item(models.Model):
machine_name = models.CharField(max_length= 200)
operation_no = models.IntegerField()
def __str__(self):
return self.machine_name# Project urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include(('<your_app_name>.urls', 'url'), namespace='url')),
]# your app urls.py
from .views import search
from django.urls import path
urlpatterns = [
path('search', search, name='search')
]https://stackoverflow.com/questions/70547701
复制相似问题