个人心得–python web开发
1.首先Django要使用根URLconf模块,通过setting.py配置文件的ROOT_URLCONF来设置。
2.加载该模块后并查找变量 urlpatterns。这是一个Python的django.conf.urls.url()实例列表。
3.Django按顺序运行每个URL模式,并在匹配所请求的URL的第一个URL中停止。
4.一旦正则表达式匹配,Django将导入并调用给定的视图,这是一个简单的Python函数(或基于类的视图)。该视图会传递以下参数:
一个实例HttpRequest。
如果匹配的正则表达式没有返回任何命名组,那么来自正则表达式的匹配将作为位置参数提供。
关键字参数由正则表达式匹配的任何命名组组成,由可选kwargs参数中指定的任何参数覆盖 django.conf.urls.url()。
5.如果没有正则表达式匹配,或者在此过程中的任何一点出现异常,Django将调用适当的错误处理视图。
(1) django2.2支持远程访问地址
1 | python manage.py runserver 0.0.0.0:8080 |
访问时打开cmd,输入ipconfig获取自己的IPv4 地址,然后复制在浏览器上输入”自己的ip地址+8080”
(2)项目设置支持远程访问
打开项目中的settings.py配置文件,找到ALLOWED_HOSTS=[]项,将自己的IP地址粘贴进去。
通用的做法:
1 | ALLOWED_HOSTS = ["*"] |
(3)创建应用程序,保证与目录处于同一目录,进入当前目录执行:
1 | python manage.py startapp myapp |
(4)在myapp文件中的view.py下创建我们的视图。网站相应首先找到myweb文件夹下urls的(根路由)
1 | urlpatterns = [ |
根据该路径,找到myapp下的urls文件。根据输入网址myapp/后面的路径,找到相应的路径
1 | urlpatterns=[ |
请求view.py下的函数体,执行对应函数
(5)在myweb/settings.py文件中,通过DATABASES项进行数据库设置,其中name为数据库的名字。
创建模型在myapp/model.py文件中编辑,其中Class类名可以随便起,因为数据库名字对应的是class Meta中进d
db_table=” “
(6) 进行数据结构迁移
1 | python manage.py migrate |
创建一个可以登录管理站点的用户。运行以下命令:
1 | python manage.py createsuperuser |
(7)通过project的urls,找出app中view相应函数的代码。
相反地,通过view相应函数的名称,找到路由urls的地址。
urls中的地址看是否与浏览器中输入的地址相符,符合就执行相应的函数,下面的不看。无符合的,网页响应404。
通过浏览器访问服务
127.0.0.1:8000/abc ==> root url(根路由) ==> 加载子路由(myweb/urls.py)
==> 正则匹配访问的路径(path) =-=> 视图函数(views.index)
==> views.py index() 响应内容
1 | from django.shortcuts import render |
(7)urls输入地址的灵活性:用尖括号捕获urls中的值。
1 | from django.contrib import admin |
(8)正则化精确匹配浏览器地址:re_path
1 | def fun(request,y,m): |
在Python正则表达式中,命名正则表达式组的语法为(?P
其中name是组的名称,并且 pattern是匹配的某种模式。
1 | re_path(r"^fun/([0-9]{4})/([0-9]{2})$",views.fun) |
(9)在总路由文件mydemo.urls中配置子路由myapp.urls,方便管理,使用include函数
1 | #mydemo.urls |
(10)反向解析地址
在myapp.urls中为path设置name
1 | path('',views.index,name='index'), |
在views.py文件中导入reverse,进行反向解析
1 | from django.http import HttpResponse,Http404 |
(11)使用redirect函数进行跳转
1 | #当执行views.index时,页面显示find函数内容 |