-1

我想做这样的事情: https : //morelab.deusto.es/publications/ 类似于该页面的高级搜索,但我不知道如何制作“导航页面”。我将 Django 1.10.5、Python 3.6 和 MongoDB 与 Pymongo 一起使用。我只想单击并打开表单,具体取决于我单击的位置。我尝试:

<--html-->

<form class="form-search" action="http://127.0.0.1:8000/views/delete" method="post" role="form">
        <input type="hidden" name="csrfmiddlewaretoken" value="NQ7BUfEYmU7i1wcsAlkjEGfSrbHYYmxAe9tOJl2lvrbE0xgBPLhadk1l29r4SK91">

        <div id="search-text" class="input-group">
            <input class="form-control" id="id_text" maxlength="50" name="text" placeholder="Publication title or author name" type="text">

            <span class="input-group-btn">
                <button class="btn btn-default" type="submit">
                    <i class="fa fa-search"></i>
                </button>
            </span>
        </div>

        <div class="btn-group" id="expand-form-panel" role="group">
            <button id="expand-form-btn" type="button" class="btn btn-default">
                <i class="fa fa-minus"></i>
            </button>
        </div>

        <h2 id="extended-form-title" style="display: block;">Advanced Search</h2>

        <ul class="nav nav-tabs" id="extended-form-tabs" style="display: block;">
            <li class=""><a id="all-tab">All <i class="fa"></i></a></li>
            <li class="active"><a data-target="#basic-info-tab" data-toggle="tab">Basic Information <i class="fa"></i></a></li>
        </ul>
        <div id="extended-form" class="form-horizontal" style="display: block;">

            <div class="tab-content">
                <div class="tab-pane active" id="basic-info-tab">                     
                   {% csrf_token %}
                    <input name="id" value="{{id}}">
                    <p>Are you sure you want to delete this post?</p>
                    <input type="submit" value="Delete">
                </div>
            </div>
        </div>
    </form>

<--视图-->

def delete(request):    
id = request.POST.get('id', False)
if request.method == 'POST':
    informe = Informes.objects(id=id)[0]
    informe.delete() 
    template = 'blog/index.html'
    params = {'Informes': Informes.objects} 
elif request.method == 'GET':
    template = 'blog/delete.html'
    params = { 'id': id } 
return render(request, template, params)

<--网址-->

url(r'^views/delete$', views.delete)
4

1 回答 1

0

我已经查看了您作为示例提供的页面,我可以说明他们正在使用什么以及如何完成它。

该页面使用 django 分页包(django.core.paginator => https://docs.djangoproject.com/en/1.11/topics/pagination/)进行分页。

搜索栏很可能使用 solr,我建议您阅读相关文档以解决您的问题。它易于使用和实施!

正如这个问题的另一个答案所提到的,它不使用 JavaScript,因为它没有实时重新加载搜索结果(这意味着它不使用诸如 AJAX 或 Angular 之类的东西)。

现在,将您需要的所有代码都放在这个答案中会有点过分。但我可以推荐一本非常好的书,它使用了你需要的所有功能。

这本书被称为 Django by Example ( https://www.packtpub.com/web-development/django-example ),通过阅读它,您可以构建 5 或 6 个项目,这些项目都使用了许多有趣的技术,您以后可以在您自己的项目中使用。

我强烈建议您阅读那本书并从那里开始!

于 2017-05-27T11:38:34.983 回答