Python 如何搜索数据库并打印结果?

Python 如何搜索数据库并打印结果?,python,django,Python,Django,我想做的是让它成为我可以直接搜索数据库的地方,而不必在搜索页面上看到整个数据库。搜索页面应为空。您进行搜索,它会直接进入db条目的详细信息页面,该页面符合您的搜索条件。如果没有匹配项,则显示“未找到匹配项”。我该怎么做 这就是我目前所拥有的。这将在与“我的搜索”框相同的页面上打印/列出数据库中的每个条目,搜索完成后,列表将缩减到与搜索条件匹配的条目数。每个数据库条目都有一个链接,您可以单击该链接,它将带您进入一个详细页面,该页面将调出该条目的信息 我正在使用Django 2.0 Manage.p

我想做的是让它成为我可以直接搜索数据库的地方,而不必在搜索页面上看到整个数据库。搜索页面应为空。您进行搜索,它会直接进入db条目的详细信息页面,该页面符合您的搜索条件。如果没有匹配项,则显示“未找到匹配项”。我该怎么做

这就是我目前所拥有的。这将在与“我的搜索”框相同的页面上打印/列出数据库中的每个条目,搜索完成后,列表将缩减到与搜索条件匹配的条目数。每个数据库条目都有一个链接,您可以单击该链接,它将带您进入一个详细页面,该页面将调出该条目的信息

我正在使用Django 2.0

Manage.py Views.py 远程列表视图的HTML

{对象_列表%中的对象为%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 %}