第一章 python Web django学习入门之创建人生中第一个django项目
随着开源框架的不断更新迭代,我们也需要时刻保持学习的态度,不然最终会被时代的浪潮拍死在沙滩。不求的技术进步超过1,但不要让你的技能小于1,今天主要讲述 django settings 配置的详细介绍,以及迈出人生第一步 Hello World !!!。
|-------------------------------------------------------------------------------------------|
|- BASE_DIR: 当前项目工作目录,用来在每一次开启项目时动态找到相关资源路径
|- SECRET_KEY: 加密的hash值以及保护某些签名数据的关键密钥
|- DEBUG: 调试模式 测试环境为True, 生产环境禁止
|- ALLOWED_HOSTS: 有哪些主机或域名可以访问当前django站点,如设置为*代表全部可访问。
|- INSTALL_APPS: django项目中所有使用的应用名称,自创建子应用也要加到这里,不然ORM数据库无法被识别到!
|- MIDDLEWARE: django中间件,用来在request或reponse过程中添加功能,比如确保安全性,传输保存Session等
|-- SecurityMiddleware: xss脚本过滤,一些安全设置
|-- SessionMiddleware: session支持中间件,在每次用户访问django项目时,添加session对每一个浏览器
|-- CommonMiddleware: 通用组件,比如为路由添加末尾斜杠
|-- CsrfViewMiddleware: 防跨站请求伪造令牌,为客户端添加csrf_token密钥,在表单提交时需提交该值
|-- AuthenticationMiddleware: admin用户组件,每个request对象都会被添加admin下的user属性
|-- MessageMiddleware: 消息中间件 展示一些后台消息给前端
|-- XFrameOptionsMiddleware: 防止欺骗点击攻击出现;自身页面被嵌入到他人页面中,点击欺骗
|- ROOT_URLCONF: 主路由配置文件,字符串填写url.py文件路径
|- TEMPLATES: 模板文件配置项
|- WSGI_APPLICATION: WSGI服务器配置项,找到当前django下的wsgi引入APP文件
|- DATABASES: 数据库配置项,默认使用SQLite3,一个本地文件数据库
|- AUTH_PASSWORD_VALIDATORS: 检查用户密码强度的验证程序列表,不过是针对admin界面下的用户,而非自定义
|- LANGUAGE_CODE: django所使用语言文件
|- TIME_ZONE: django所使用时区
|- USE_I18N: 国际化支持 18表示Internationalization这个单词首字母I和结尾字母N之间的字母有18个
|- USE_L10N: 是localization的缩写形式,意即在l和n之间有10个字母
|- USE_TZ:开启了Time Zone功能,则所有的存储和内部处理,包括print显示的时间将是是UTC时间格式
|- STATIC_URL: URL访问静态资源时的路径
|-------------------------------------------------------------------------------------------|
项目: 则是一个网站使用的配置和应用的集合。项目可以包含很多个应用。
应用: 是一个专门做某件事的网络应用程序
例如: 博客系统,或者公共记录的数据库,或者简单的投票程序 等。
打开apps下my_app 子应用中的 views.py文件,
web访问起始就是通过一个URL连接地址访问到服务器上的一个函数。
在views.py中我们通过编写函数的形式,接收用户的一个request请求,并返回一个response响应。
# 每一个视图函数都需要有一个必须参数 request,用来接收用户访问时的请求内容
# HttpResponse函数向用户返回一个字符串
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello World !!
")
创建一个可以在请求时返回H1标签的视图函数,但是现在通过浏览器还是访问不到的,
需要我们为这个my_app下的函数进行路由配置, 以达到可以访问的条件。
# my_project/urls.py
from django.urls import path
from django.contrib import admin
from apps.my_app import views
urlpatterns = [
path('admin/', admin.site.urls), # admin控制界面路由
path('', views.index)
]
接着访问: http://127.0.0.1:8001/ , 你就会看到你向世界的问候 Hello World !!
以上将视图函数的查找直接写到主路由并不是最好的办法,因为我们的项目会有非常多的路由配置项,如果都堆到这个主路由文件中肯定是非常臃肿, 杂乱无章,难以维护;
# my_project/apps/my_app/urls.py
from django.urls import path
from apps.my_app import views
urlpatterns = [
path('', views.index)
]
#my_project/urls.py
from django.contrib import admin
from django.urls import path, include
# 通过include()函数引用其它url confs
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('apps.my_app.urls')), # apps.my_app.urls 相当于apps/my_app/urls.py
]
最后我们再次访问: http://127.0.0.1:8001/ ,如果可以看到的话,那么恭喜你,非常的Nice !!
1. 查找主路由文件下的 urlpatterns 全局变量,这是一个序列数据类型,其中每一个元素都是对应的一个路由匹配规则。
2. 如果在规则中查找到符合匹配规则的,则执行其中的对应执行函数。但是如果对应的不是一个执行函数,而是一个 include() 路由包含,那么截断与此项匹配的 URL 的部分,并将剩余的路由字符串发送到 include所包含的子路由文件中以供进一步处理。
3. 最终如果没有匹配到的任何结果,Django默认抛出 Page not found (404)响应,匹配到则返回对应函数的response。
至此,我们的Hello World项目已经涵盖了Django框架中的部分常用的组件;
路由,视图
那么其中每一部分都还有很多内容等着我们去了解,在接下来的章节中我们会继续详细给大家介绍!