Django框架的使用-基于Python

Django框架的使用-基于Python

本文档介绍web框架中Django框架,基于Python。

1 基本概念

1.1 URL格式

Uniform Resource Locator,统一资源定位器,
URL由三部分组成:资源类型、存放资源的主机域名、资源文件名。
也可认为由4部分组成:协议、主机、端口、路径

URL的一般语法格式为:
(带方括号[]的为可选项):
protocol : // hostname[:port] / path / [;parameters][?query]#fragment

  • protocol:协议,如http等。
  • hostname:主机名、IP地址
  • port:端口号
  • path:路径
  • parameters:参数,以?开始到#结束的区域传递参数
  • query:查询
  • fragment:信息片断

1.2 QueryDict 对象

这是是Django中的字典对象,与Python传统的字典对象不同的是:Python中的字典一个键只能对应一个值,而QueryDict允许一个键对应多个值。

  • QueryDict.get(key) 获取的是所有值的最后一个,只有一个值时获取当前值
  • QueryDict.getlist(key) 获取这个键对应的所有值, 存放在列表中返回

2 工程基本配置

2.1 工程创建

2.1.1 创建

创建工程前应cd至想保持工程的木下

django-admin startproject 工程名称

创建目录如下:
在这里插入图片描述

2.1.2 工程各目录文件作用
2.1.2.1 配置文件——settings.py
  • BASE_DIR:指向当前工程的根目录
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

___file___ : 当前的文件
os.path.abspath ( 文件 ) : 获取这个文件的绝对路径
os.path.dirname( 路径 ) : 获取这个路径的上一级路径,两次即返回根目录

  • DEBUG:设置是否为调试模式,默认为True,在True情况下报错会显示具体错误信息。实际对外运行需要设置成False,同时要设置参数ALLOWED_HOSTS,设置允许访问的IP,*为所有。
  • LANGUAGE_CODE:语言,‘zh-hans’ 中文
  • TIME_ZONE:时区,‘Asia/Shanghai’ # 亚洲上海时区

2.2 运行

切换至创建的过程目录里

python manage.py runserver		# 默认127.0.0.1:8000也可以选择在后面选择IP地址和端口

默认条件
在这里插入图片描述
运行效果在浏览器输入 127.0.0.1:8000

2.3 子应用

2.3.1 创建

cd至工程文件的根目录下

python manage.py startapp 子应用名称

创建的子应用目录
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200903193803812.png?x-oss-process=image/watermark,type_Z

2.3.2 子应用目录各文件作用
  • admin.py :文件跟网站的后台管理站点配置相关。
  • apps.py :文件用于配置当前子应用的相关信息。
  • migrations :目录用于存放数据库迁移历史文件。
  • models.py :文件用户保存数据库模型类。
  • tests.py :文件用于开发测试用例,编写单元测试。
  • views.py :文件用于编写Web应用视图。
2.3.3 添加子应用于工程

在工程文件里的settings.py文件里的INSTALLED_APPS添加类似“子应用名称.apps.NameConfig”(例’demo_1.apps.Demo1Config’,具体名字根据子应用的名字确定,可以在子应用的apps.py文件查看),如下
在这里插入图片描述

2.4 视图创建

2.4.1 视图编写

打开子应用目录下的views.py编写视图程序

def index(request):
    return HttpResponse("Hello World!")		# 在页面输出Hello World!
2.4.2 定义路由URL

1.在子应用根目录下创建文件urls.py称子路由

from django.conf.urls import re_path
from . import views         # 导入自己编写的视图文件

# urlpatterns 是被 django 自动识别的路由列表变量
urlpatterns = [
                # 每个路由信息都需要使用 url 函数来构造
                # url (路径, 视图)
                re_path(r'^$', views.index),
              ]

re_path():包含四个参数

  • regex:正则表达式,其中的(?P<name>regex)会被传入view函数中与name相同的参数中,填写的为访问地址。例如上面的写法访问地址为:http://127.0.0.1:8000/demo_1,如果是’^index/$'则地址为:http://127.0.0.1:8000/demo_1/index
  • 创建路由地址:re_path(/r’^inininin /$’, views.index),创建’子应用名字/inininin/’,以此格式书写 r’^inininin/$’ 可以防止访问路由时发生屏蔽。
  • 获取路由地址:reverse( ‘子应用名称 : 某路由名称’ )(from django.urls import reverse),返回路由地址为: ‘/子应用名称/某路由名称’
  • view:视图函数
  • kwargs:字典类型,其中的键值对会按照随机顺序传入view函数中
  • name:对本条URL进行别名,这样就可以在其他地方被引用。

2.在工程根目录下打开urls.py,修改urlpatterns参数

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

urlpatterns = [
                path('admin/', admin.site.urls),
                url('demo_1/', include('demo_1.urls')),
              ]

3.运行manage.py(python manage.py runserver)

输入网址查看http://127.0.0.1:8000/demo_1/

3 参数传递

3.1 前端向后传递

3.1.1 URL查询字符传参

查询字符是在url中的parameters,是url地址中以’?‘开始以’#'结束的字符段。
可以在views.py文件编写视窗函数通过 request.GET 获取,返回为QueryDict 。

# url: http://127.0.0.1:8000/demo_1/get_url/?a=1&b=2&a=3#/
def get_url(request):
    # 获取查询字符串参数
    a = request.GET.get('a')
    b = request.GET.get('b')
    alist = request.GET.getlist('a')
    # 打印
    print(a)  # 3
    print(b)  # 2
    print(alist)  # ['1', '3']
    return HttpResponse('OK')

可以使用接口调试软件Postman进行参数传递:
在这里插入图片描述
软件会自动帮助输入调整网址

3.1.2 URL路径传参

在基础的视图设置中,我们的路径使用的是完整的路径名,要求完全匹配才能进行访问,而正则化是允许模糊匹配的,因此我们可以利用路径进行传参。

# url:127.0.0.1:8000/demo_1/get_path/adad/2020/
# views.py
def get_path(request, name, year):
    '''定义weather函数, 接收路径参数'''
    print(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值