Django快速入门 —— 前台管理 (图书管理系统)

Django快速入门: 前台管理

目录

Django快速入门: 前台管理

第一步::URLconf 路由管理

第二步:视图函数处理业务逻辑

第三步:模板管理实现好看的HTML页面

(1)模板引擎配置

(2)模板语法: 变量

(3)模板语法: 常用标签

(4)主页与详情页前端HTML设计


第一步::URLconf 路由管理

在 Django 中,定义 URLconf 包括正则表达式、视图两部分 。

  • Django 使用正则表达式匹配请求的URL,一旦匹配成功,则调用应用的视图 。
  • 注意:只匹配路径部分,即除去域名、参数后的字符串 。
  • 在主配置文件中添加子配置文件,使主 urlconf 配置连接到子模块的 urlconf 配置文件 。

主配置文件配置如下, 已经配置过, 可以忽略此步骤:

from django.contrib import admin
from django.urls import path, include

from bookApp.views import index

urlpatterns = [
    path('admin/', admin.site.urls),
    # 当用户请求路径为/book/时,访问bookApp/urls.py子路由配置文件
    path('book/', include('bookApp.urls')),
]

bookApp 子应用的子配置文件如下:

from django.urls import path

from bookApp import views

urlpatterns = [
    # 当用户访问路径是book/, 执行views.index视图函数。
    path(r'', views.index, name='index'),
    # 显示书籍的详情页, 接收一个int值并赋值给id
    path(r'<int:id>/', views.detail, name='detail'),
]

第二步:视图函数处理业务逻辑

在 Django 中,视图对WEB请求进行回应( response )。

  • 视图接收 reqeust 请求对象作为第一个参数,包含了请求的信息 。
  • 视图函数就是一个Python函数,被定义在 views.py 中 。
  • 定义完成视图后,需要配置 urlconf ,否则无法处理请求。

bookApp/views.py 内容:

from django.shortcuts import render

# Create your views here.
from django.http import HttpResponse
# 视图: 对用户的请求(request)进行业务逻辑操作,最终返回给用户一个响应(response).
from bookApp.models import Book, Hero


def index(request):
    # print("用户请求的路径:",request.path)
    books = Book.objects.all()
    # 返回响应信息
    # return  HttpResponse(books)
    # 渲染: 将上下文context{'books': books}填充到book/index.html代码的过程。
    return render(request, 'book/index.html', {'books': books})


def detail(request, id):
    """书籍详情页信息"""
    book = Book.objects.filter(id=id).first()
    heros = book.hero_set.all()
    return render(request, 'book/detail.html',
                  {'book': book, 'heros': heros})

第三步:模板管理实现好看的HTML页面

作为Web 框架, Django 需要一种很便利的方法以动态地生成HTML。最常见的做法是使用模板。 模板包含所需HTML 输出的静态部分,以及一些特殊的语法,描述如何将动态内容插入。

(1)模板引擎配置

创建模板的目录如下图:

在 BookManage/settings.py 文件中,默认设置了 TEMPLATES 的 DIRS 值:

(2)模板语法: 变量

变量输出语法

当模版引擎遇到一个变量,将计算这个变量,然后将结果输出。

变量名必须由字母、数字、下划线(不能以下划线开头)和点组成。

当模版引擎遇到点("."),会按照下列顺序查询:

  • 字典查询,例如: foo["bar"]
  • 属性或方法查询,例如: foo.bar
  • 数字索引查询,例如: foo[bar]
  • 如果变量不存在, 模版系统将插入'' (空字符串)。

(3)模板语法: 常用标签

语法

{ % tag % }

作用

在输出中创建文本。

控制循环或逻辑。

加载外部信息到模板中。

for标签

{% for ... in ... %}
循环逻辑
{% endfor %}

if标签

{% if ... %}
逻辑1
{% elif ... %}
逻辑2
{% else %}
逻辑3
{% endif %}

comment标签

{% comment %}
多行注释
{% endcomment %}

include标签

加载模板并以标签内的参数渲染

{% include "base/left.html" %}

url :反向解析

{% url 'name' p1 p2 %}

csrf_token 标签

用于跨站请求伪造保护

{% csrf_token %}

(4)主页与详情页前端HTML设计

定义 **index.html** 模板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1 style="color: #00e39a">图书管理系统</h1>
<ul>
    {% for book in books %}
        <li><a href="/book/{{ book.id }}/">{{ book.name }}</a></li>
    {% endfor %}
</ul>
</body>
</html>

定义 **detail.html** 模板

在模板中访问对象成员时,都以属性的方式访问,即方法也不能加括号

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>{{ book.name }}</h1>
<h1>{{ book.pub_date }}</h1>
<h1>{{ heros }}</h1>
</body>
</html>

访问链接, 测试运行是否成功:

http://127.0.0.1:8080/book/

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值