Django Web应用框架【模板】

Django-bootstrap3

Bootstrap来自Twitter的前端框架,基于HTML、CSS、JavaScript,简洁灵活,使得Web开发更快捷,而Django-bootstrap3是将Bootstrap3集成到了Django中,作为Django的一个应用,从而快速的创建Web前端页面

安装django-bootstrap3

E:\Programs\Python\Python_Django_Interface>pip install django-bootstrap3
Collecting django-bootstrap3
  Downloading https://files.pythonhosted.org/packages/76/af/c1854e4c4e513c27c7bf08d52dadcadd41717562a548189659e4df080464/django-bootstrap3-11.1.0.tar.gz (42kB)
    100% |████████████████████████████████| 51kB 40kB/s
Building wheels for collected packages: django-bootstrap3
  Building wheel for django-bootstrap3 (setup.py) ... done
  Stored in directory: C:\Users\davieyang\AppData\Local\pip\Cache\wheels\63\0a\a5\4ecad44ab63d90133ede95c2e7d100a7a3ed94f5a0a73b924c
Successfully built django-bootstrap3
Installing collected packages: django-bootstrap3
Successfully installed django-bootstrap3-11.1.0

然后修改…/guest/settings.py文件,添加bootstrap3应用

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

修改…/sign/views.py中的event_manage()视图函数

@login_required
def event_manage(request):
    #username = request.COOKIES.get('user', '')  # 读取浏览器 cookie
    username = request.session.get('user', '')  # 读取浏览器 session
    events = Event.objects.all()  # 查询所有发布会数据
    return render(request, "event_manage.html", {"user": username, "events": events})  # 通过render附加在event_manage.html页面返回给客户端

修改…/templates/event_manage.html页面文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Guest Manage</title>
    <!--加载bootstrap3应用、CSS、JavaScript文件, {% %}是Django模板语言的标签 -->
    {% load bootstrap3 %}
    {% bootstrap_css %}
    {% bootstrap_javascript %}
</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">
              <!--设置导航栏,class="active" 表示当前菜单处于选中状态 -->
            <li class="active"><a href="#">发布会</a></li>
            <li><a href="/guest_manage/">嘉宾</a></li>
          </ul>
          <ul class="nav navbar-nav navbar-right">
              <!--{{ }}为Django的模板语言标签,用于定义显示变量,user为客户端获取的浏览器sessionid对应的登录名 -->
           <li><a href="#">{{user}}</a></li>
           <li><a href="/logout/">退出</a></li>
         </ul>
        </div><!--/.nav-collapse -->
      </div>
    </nav>
 <!--发布会表单-->
      <div class="row" style="padding-top: 80px">
        <div class="col-md-6" style="width: 900px;">
          <table class="table table-striped">
            <thead>
              <tr>
                <th>id</th>
                <th>名称</th>
                <th>地址</th>
                <th>时间</th>
                <th>人数</th>
                <th>状态</th>
                <th>签到</th>
              <!--  <th>签到正式</th> -->
              </tr>
            </thead>
            <tbody>
            <!--通过Django模板语言,循环打印发布的id,name,status,address和start_time等字段-->
            <!--Django模板语言与Python语言并非完全一样,for循环语句需要有对应的endfor来表示语句的结束-->
            <!--同样的,if语句也需要endif来结束-->
              {% for event in events %}
                <tr>
                  <td>{{ event.id }}</td>
                  <td>{{ event.name }}</td>
                  <td>{{ event.address }}</td>
                  <td>{{ event.start_time | date:"Y-m-d H:i:s" }}</td>
                  <td>{{ event.limit }}</td>
                  <td>{{ event.status }}</td>
                  <td><a href="/sign_index/{{ event.id }}/"  target="{{ event.id }}_blank">sign</a></td>
                <!--  <td><a href="/sign_index2/{{ event.id }}/"  target="{{ event.id }}_blank">sign_web</a></td>
                -->
                </tr>
             {% endfor %}
             {{ hint }}
            </tbody>
          </table>
        </div>
      </div>
</body>
</html>

重新登陆系统,到http://127.0.0.1:8000/event_manage/页面,如图显示:
在这里插入图片描述
继续修改…/templates/event_manage.html文件中添加搜索菜单

   <!--查询发布会-->
      <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>
          <button type="submit" class="btn btn-primary" onclick="window.location.href='/add_event/'" style="margin-top: 8px;">添加</button>
        </div>
      </div>

刷新页面如下所示:
在这里插入图片描述
为搜索添加路由,需改…/guest/urls.py文件

from django.contrib import admin
from django.urls import path
from sign import views
from django.conf.urls import url

urlpatterns = [
    path(r'admin/', admin.site.urls),
    path(r'index/', views.index),  # 添加index/路径配置
    url(r'login_action/', views.login_action),
    url(r'event_manage/', views.event_manage),
    url(r'^$', views.index),
    url(r'^index/$', views.index),
    url(r'^accounts/login/$', views.index),
    url(r'^search_name/$', views.search_name),
]

添加search_name()函数,修改…/sign/views.py文件

# 发布会名称搜索
@login_required
def search_name(request):
    username = request.session.get('user', '')
    search_name = request.GET.get("name", "")
    #search_name_bytes = search_name.encode(encoding="utf-8")
    events = Event.objects.filter(name__contains=search_name)
    if len(events) == 0:
        return render(request, "event_manage.html", {"user": username,
                                                     "hint": "根据输入的 `发布会名称` 查询结果为空!"})
    return render(request, "event_manage.html", {"user": username, "events": events})

然后试一下搜索功能吧,比如搜索“发布会A”
在这里插入图片描述

发布了162 篇原创文章 · 获赞 42 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/dawei_yang000000/article/details/102649715