目录
前言
Django,我来啦(*'ε`*)。
搭建环境
我的pycharm是社区版,由于社区版没有集成Django模块,所以不能直接创建,只能先创建普通项目工程,然后在通过pip的方式安装Django。
安装Django模块
我们进入pycharm,点击new project,创建一个名为Django的工程。
刚创建完工程的时候啥也没有,点击下方的terminal终端
输入
pip install django
直到出现successfully的字样说明已经安装成功。
创建Django项目
继续在终端输入
django-admin startproject mysite
即可创建一个mysite工程。
验证安装
至此我们的Django已经安装成功了,现在可以验证一下。
第一种方法是在终端启动服务
cd mysite
python manage.py runserver
出现 http://127.0.0.1:8000/ 其中 Django的端口号是8000
说明已经安装成功了
第二种方法是更换运行路径
然后点击运行即可。
可以看到两种启动方式本质上是一致的。
创建APP
此APP非彼APP, 我们先来了解一些必要的概念。Django 里什么东西叫 APP 呢?我们已经创建了工程mysite, 那么工程与APP之间到底有什么不同呢?它们的区别就是一个是配置另一个是代码,一个project包含很多个Django app以及对它们的配置。
在mysite工程中输入
python manage.py startapp app01
即可生成一个APP01文件夹
文件介绍
上面一下子抛出这么多命令,生成这么多文件,现在就来介绍一下各个文件功能。
★manage.py
最重要的文件之一。它是我们项目管理的脚本,一种命令行工具,允许你以多种方式与该Django项目进行交互。我们在启动项目,创建APP,数据库管理等操作时,都要用到它,一般情况下不用修改,但经常使用
★urls.py
先看一下里面的内容
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
]
简单的说这里就是记录url和函数的对应关系,就拿上面的path('admin/', admin.site.urls)来说,第一个参数是url,第二个参数就是跳转这个url之后所要调用的函数。因此,每有新的网页出现都要在这里记录要调用的函数。
asgi.py、wsgi.py
asgi,异步服务网关接口, 一个介于网络协议服务和Python应用之间的标准接口,能够处理多种通用的协议类型,包括HTTP,HTTP2和WebSocket。
wsgi, Web Server Gateway Interface,Web服务网关接口,用来描述Web 服务器如何与Web 应用通信的规范。
ASGI是Django3.0之后才有的。它诞生则是为了解决Python常用的WSGI不支持当前Web开发中的一些新的协议标准。同时,ASGI对于WSGI原有的模式的支持和WebSocket的扩展,即ASGI是WSGI的扩展。
一般情况下都不用修改。
setting.py
项目配置文件,常常使用。如配置APP路径,配置数据库,配置中间件等。
APP
一个工程可以有多个APP。APP相当于一个公司的各个部门,每个APP处理不同的工作,如一个APP处理用户界面,一个APP处理管理员界面等。每个APP有独立的数据表结构,函数,html模板,css等
他下面也有许多文件
- apps:app默认信息,一般不修改
- ★views:简单地说就是一个函数,接收并处理请求,调用模型和模版,响应请求,与上面urls.py的path第二个参数相对应
- ★models:涉及数据库相关操作
- tests: 单元测试,一般不修改
- admin:Django默认提供的admin后台管理功能。自己测试,往里面录数据的时候用。
Django的第一个程序
进入默认管理员界面
各文件的大致功能我已经介绍完了。在urls.py那里我介绍过,它是记录url与函数的关系,跳转url会调用对应的函数。
它默认会有个关系
path('admin/', admin.site.urls),
admin.site.urls函数是默认就有的。
我们试着在中加上该路径,变成然后回车一下。
果不其然跳转到了新的界面,然后随便输入一个用户名密码。
就能进入管理员的界面了。
定义一个函数
我们是在APP目录下的views文件里面定义函数。每个函数默认都要有一个参数request,假如我们用HttpResponse返回,那么我们可以写成以下形式,作为我们Django的第一个函数。
from django.shortcuts import render, HttpResponse
# Create your views here.
# 必须带上request参数
def test(request):
return HttpResponse("Hello, world!")
url与函数绑定
通过了解进入管理员界面的情况,大家应该对这个绑定关系操作会稍微熟悉些。现在我们就要对新创建的函数进行绑定url,而绑定url操作是在urls.py文件中进行。url的话可以随便写一个,但是要以"/"结尾,现在就在views.py的urlpatterns中添加关系,格式与默认的管理员界面路径一致。
urlpatterns = [
path('admin/', admin.site.urls),
path('hd/', views.test), # 调用views文件中的test函数
]
那么问题来了,这个问题我也琢磨了好久。因为test函数是在views.py中而不是urls.py,所以需要使用import导入到urls.py中。据我目前了解的情况来看,它导入的文件路径与常规的文件导入路径不一致。
以下图为例
我们先看一下文件目录
在urls.py导入views.py正常情况应该是
from mysite.app01 import views
这样pycharm 不会提示有问题可以正常编译,但这样点击运行的话却发现他报错了
而如果把mysite去掉,写成,会发现pycharm提示语法错误,app01和views下方都有红线,提示出错(app01的错误我点击了忽略显示,所以没有像views下方一样有红线。),但是这样点击运行的却能运行成功!
至于为什么这样我也不太清楚,只能视为特殊情况了。我这样理解:在Django项目中,不考虑各文件的绝对路径,如需导入文件直接通过 from 目录名 import 文件名 导入即可
注册APP
如果现在访问我们的新设立的网址,他会正常跳转吗?不会。因为我们创建了APP之后还需要注册APP,注册完APP后才能使用APP的各项功能。
注册APP也很简单,在setting.py文件中的 INSTALLED_APPS 声明一下即可。我们将app下面apps文件的类告诉他即可注册成功。
'app01.apps.App01Config'
也能直接告诉他APP名
'app01'
但一般使用第一种 'app01.apps.App01Config',才是标准的声明格式。
这时候的你应该迫不及待了吧哈哈,已经全部弄完了,点击运行,会生成一个地址
点进去就好了。
然后是不是出现这种情况?
别紧张,将地址由改成即可。
不解之处
在Django中,文件,函数的导入方式似乎与python导入文件方式不同,于是我暂时理解为:在Django项目中,不考虑各文件的绝对路径,如需导入文件直接通过 from 目录名 import 文件名 导入即可。
看来这个地方只能靠后面的学习来理解它原理了。
想说的话
感谢bilibili大学,感谢@武沛齐老师,为我在学习Django的路上指明方向。因为学校没有Django课程,没有系统学习过Django开发,只能在视频上学习,所以很多知识点都理解的不够全面,今后的文章里可能会有很多表述错误的情况,还望大家多多指点,我们一起加油!