Django模板之发布会列表及搜索功能(十一)

本章将使用Bootstrap前端框架结合Django来开发web页面。
Bootstrap是基于html,css,javascript的一个css/html框架。>
[bootstrap中文网](http://www.bootcss.com>
pypi仓库地址

1.Django-bootstrap3安装完成之后,在../FirstProject/settings.py文件中添加“bootstrap3”应用

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'FirstApp',
'bootstrap3',
]

2.发布会的管理

回到视图层的开发中,打开../FirstApp/views.py文件,修改event_manage()视图。

# 发布会管理
@login_required
def event_manage(request):
    event_list = Event.objects.all()
    username = request.session.get('user', '')
    return render(request, "event_manage.html", {"user":username, "events":event_list})

导入model中的event类,通过event.objects()查询所有发布会对象(数据),并通过render()方法附加在event_manage.html页面返回给客户端。
打开并编写../templates/event_manage.html页面

<!DOCTYPE html>
<html>
<head>
    {% load bootstrap3 %}
    {% bootstrap_css %}
    {% bootstrap_javascript %}
    <title>Guest Manage</title>
</head>
<body role="document">
    <!--导航栏-->
    <nav class="navbar navbar-inverse navbar-fixed-top">
        <div class="container">
            <div class="navbar-header">
                <a class="navbar-brand" href="/event_manage/">Guest Manage System</a>
            </div>
            <div id="navbar" class="collapse navbar-collapse">
                <ul class="nav navbar-nav">
                    <li class="active"><a href="#">发布会</a></li>
                    <li><a href="/guest_manage/">嘉宾</a></li>
                </ul>
                <ul class="nav navbar-nav navbar-right">
                    <li><a href="#">{{user}}</a></li>
                    <li><a href="/logout/">退出</a></li>
                </ul>
            </div>
        </div>
    </nav>
    <!--发布会搜索表单-->
    <div class="page-header" style="padding-top: 60px;">

        <div id="navbar" class="navbar-collapse collapse">

          <form class="navbar-form" method="get" action="/search_name/">

            <div class="form-group">

              <input name="name" type="text" placeholder="名称" class="form-control">

            </div>

            <button type="submit" class="btn btn-success">搜索</button>

          </form>

        </div><!--/.navbar-collapse -->

      </div>
    <!--发布会列表-->
    <div class="row" style="padding-top: :80px;">
        <div class="col-md-6">
            <table class="table table-striped">
                <thead>
                    <tr>
                        <th>id</th><th>名称</th><th>状态</th><th>地址</th><th>时间</th>
                    </tr>
                </thead>
                <tbody>
                    {% for event in events %}
                    <tr>
                        <td>{{event.id}}</td>
                        <td>{{event.name}}</td>
                        <td>{{event.status}}</td>
                        <td>{{event.address}}</td>
                        <td>{{event.start_time}}</td>
                    </tr>
                    {% endfor %}
                </tbody>
            </table>
        </div>
    </div>

</body>
</html>

{% load bootstrap3 %}
加载bootstrap3应用
{% bootstrap_css %}
加载css文件
{% bootstrap_javascript %}
加载javascript文件
{% %}为Django模板语言的标签。

通过Django模板语言,循环打印发布id,name等字段,Django的for循环语句需要有对应endfor来表示语句的结束;同样,if分支语句也要有endif来表示语句结束。

3.在../FirstProject/urls.py文件中添加搜索路径的路由。

from django.conf.urls import url
from django.contrib import admin
from FirstApp import views

urlpatterns = [
    url(r'^$', views.index),
    url(r'^admin/', admin.site.urls),
    url(r'^index/$', views.index),
    url(r'^login_action/$', views.login_action),
    url(r'^event_manage/$', views.event_manage),
    url(r'^accounts/login/$', views.index),
    url(r'^search_name/$', views.search_name),
]

4.打开../FirstApp/views.py文件,创建search_name()视图函数。

# 发布会名称搜索
@login_required
def search_name(request):
    username = request.session('user', '')
    search_name = request.GET.get("name", "")
    event_list = Event.objects.filter(name__contains=search_name)
    return render(request, "event_manage.html", {"user":username, "events": event_list})

以上为今天更新内容,接下来会更新嘉宾管理和签到功能。

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页