gpt4 book ai didi

python - 创建网络查询表单

转载 作者:行者123 更新时间:2023-11-28 20:51:16 25 4
gpt4 key购买 nike

我有两个模型:Director 和 Film。

我想创建一个 Web 查询表单,以便用户可以搜索“1990 年至 1998 年间导演‘史蒂文·斯 PIL 伯格’的所有电影”之类的内容。

只是好奇最好和最简单的方法是什么?

谢谢,

最佳答案

好的,最简单的解决方案就是这样。

我对你的模型结构做了一些假设,所以相应调整。

假设这是我们的 models.py

from django.db import models

class Director(models.Model):
name = models.CharField(max_length=128)
# maybe some other fields...

class Film(models.Model):
title = models.CharField(max_length=128)
director = models.ForeignKey(Director)
created_at = models.DateField()

我们天真的观点.py请记住,我故意省略了许多健全性检查。

import datetime
from django.shortcuts import render_to_response
from myapp.models import Film

def search(request):
# Suppose we support these params -> ('director', 'fromdate', 'todate')
request_params = request.GET.copy()
fromdate = datetime.datetime.strptime(request_params['fromdate'], 'some-string-format')
todate = datetime.datetime.strptime(request_params['todate'], 'some-string-format')
# Our query is ready to take off.
film_results = Film.objects.filter(
director__name=request_params['director'],
created_at__range=(fromdate, todate)
)
return render_to_response('search_results.html', {'results':film_results})

我们的 search_results.html 模板

{% extends some_base.html %}
{% if results }
{% for film in results %}
<h3>{{ film.title }}</h3>
<p>Director: {{ film.director.name }}</p>
<p>When: {{ film.created_at }}</p>
{% endfor %}
{% else %}
<p>Sorry no results for your query</p>
{% endif %}

另请阅读 this关于从字符串创建日期时间对象

编辑:哦,我忘记了 urls.py 和实际的形式 :)

在您的 url.py 中,在 urlpatterns 中添加类似这样的内容。

url(r'^search/$', 'myapp.views.search'),

现在实际的搜索表单必须是这样的:

<form method='GET', action='/search/'>
... your fields
</form>

如果您愿意,您可以通过 django 表单生成它。无论如何,我想这不会让你走得太远。如果你正在做任何严重的事情你都可以看看haystack

关于python - 创建网络查询表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10389594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com