Python 如何搜索数据库并打印结果?
我想做的是让它成为我可以直接搜索数据库的地方,而不必在搜索页面上看到整个数据库。搜索页面应为空。您进行搜索,它会直接进入db条目的详细信息页面,该页面符合您的搜索条件。如果没有匹配项,则显示“未找到匹配项”。我该怎么做 这就是我目前所拥有的。这将在与“我的搜索”框相同的页面上打印/列出数据库中的每个条目,搜索完成后,列表将缩减到与搜索条件匹配的条目数。每个数据库条目都有一个链接,您可以单击该链接,它将带您进入一个详细页面,该页面将调出该条目的信息 我正在使用Django 2.0 Manage.py Views.py 远程列表视图的HTMLPython 如何搜索数据库并打印结果?,python,django,Python,Django,我想做的是让它成为我可以直接搜索数据库的地方,而不必在搜索页面上看到整个数据库。搜索页面应为空。您进行搜索,它会直接进入db条目的详细信息页面,该页面符合您的搜索条件。如果没有匹配项,则显示“未找到匹配项”。我该怎么做 这就是我目前所拥有的。这将在与“我的搜索”框相同的页面上打印/列出数据库中的每个条目,搜索完成后,列表将缩减到与搜索条件匹配的条目数。每个数据库条目都有一个链接,您可以单击该链接,它将带您进入一个详细页面,该页面将调出该条目的信息 我正在使用Django 2.0 Manage.p
{对象_列表%中的对象为%j}
{%if obj.image%}
{%endif%}
{%if obj.user.get_full_name%}
作者:{{obj.user.get_full_name}
{%endif%}
{{obj.orig|truncatechars:120}
{%endfor%}
详细信息视图的HTML
{%if instance.image%}
{%endif%}
{{instance.brand}{{model}}
{%if instance.user.get_full_name%}
作者:{{instance.user.get_full_name}
{%endif%}
最初随提供:{{instance.orig}
{%if instance.comp%}
兼容:{{instance.comp}
{%endif%}
您需要在qs中添加一些代码,但现在一切正常
您需要了解有关筛选查询并将其传递到视图的更多信息。如果您的模型包含标题字段,您可以在模板中{{your_data.title}}使用您的{u data.title}执行筛选后传递的查询谢谢。我在youtube上浏览了一些教程。最接近我的教程是“CodingTrepreners”的“try django 1.9”,它有38个视频。由于我对这一点是如此陌生,我本应该遵循导师的建议,并遵循django 1.9,但我使用了2.0,这使遵循这一建议成为了一场噩梦。我的网站目前看起来像本教程,并具有相同的功能。
class PostManager(models.Manager):
def active(self, *args, **kwargs):
return super(PostManager, self).filter(draft=False).filter(publish__lte=timezone.now())
def upload_location(instance, filename):
return "%s/%s" %(instance.slug, filename)
class Remote(models.Model):
brand = models.CharField(max_length=20)
model = models.CharField(max_length=25)
type = models.CharField(max_length=50)
orig = models.TextField()
comp = models.TextField(blank=True)
image = models.ImageField(upload_to=upload_location,
null=True, blank=True, default=0,
timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)
user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE, default=1)
slug = models.SlugField(unique=True)
objects = PostManager()
def __str__(self):
return self.model
def get_absolute_url(self):
return reverse("mainapp:detail", kwargs={"slug": self.slug})
def create_slug(instance, new_slug=None):
slug = slugify(instance.model) #slugify title
if new_slug is not None:
slug = new_slug
qs = Remote.objects.filter(slug=slug).order_by("-id")
exists = qs.exists()
if exists:
new_slug = "%s-%s" %(slug, qs.first().id)
return create_slug(instance, new_slug=new_slug)
return slug
def pre_save_post_receiver(sender, instance, *args, **kwargs):
if not instance.slug:
instance.slug = create_slug(instance)
pre_save.connect(pre_save_post_receiver, sender=Remote)
def detail(request, slug=None):
instance = get_object_or_404(Remote, slug=slug)
share_string = quote_plus(instance.orig)
context={
"model": instance.model,
"instance": instance,
"share_string": share_string,
}
return render(request, 'mainapp/remote_detail.html', context)
def remote_list(request):
today = timezone.now().date()
queryset_posts = Remote.objects.all()
if request.user.is_staff or request_user_is_superuser:
queryset_posts = Remote.objects.all()
query = request.GET.get("q") # search stuff
if query:
queryset_posts = queryset_posts.filter(
Q(model__icontains=query)|
Q(orig__icontains=query)
).distinct() #.distinct() doesn't allow duplicates to show up
paginator = Paginator(queryset_posts,10) # Show 25 contacts per page
page_request_var = "pagina" #this changes "Page name in pagination
page = request.GET.get(page_request_var)
queryset = paginator.get_page(page)
context={
"object_list": queryset,
"title": "List",
"page_request_var": page_request_var,
"today": today,
}
return render(request, 'mainapp/remote_list.html', context)
<form class='mb-2' method='GET' action=''>
<input type='text' name='q' placeholder='Search posts' value='{{ request.GET.q }}'/>
<input href='{{ obj.get_absolute_url }}' type='submit' value='Search'/>
</form>
{% for obj in object_list %}
{% if obj.image %}
<img class="card-img-top" src="{{ obj.image.url }}" alt="Image" style="max-width:100px;">
{% endif %}
<h5 class="card-title"><a href='{{ obj.get_absolute_url }}'>{{ obj.model }}</a></h5>
{% if obj.user.get_full_name %}
<p>Author: {{ obj.user.get_full_name }}</p>
{% endif %}
<p class="card-text">{{ obj.orig|truncatechars:120 }}</p>
<a href="{{ obj.get_absolute_url }}" class="btn btn-primary">View</a>
{% endfor %}
{% if instance.image %}
<img src='{{ instance.image.url }}' class='img-responsive' style='max-width:300px;' />
{% endif %}
<h3>{{ instance.brand}} {{ model }}</h3>
{% if instance.user.get_full_name %}
<p>Author: {{ instance.user.get_full_name }}</p>
{% endif %}
<h5>Originally Supplied With: </h5> {{ instance.orig }}
{% if instance.comp %}
<h5>Compatible With: </h5>{{ instance.comp }}
{% endif %}