django
1.wsgi web服务网络接口;python3中接收的是byte类型列表:return [bytes(result, encoding=‘utf-8’)]
def RunServer(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/html')])
userUrl = environ['PATH_INFO']
func = None
for item in url:
if item[0] == userUrl:
func = item[1]
break
if None == func or func == '':
return [b'HTTP 404']
else:
result = func()
'''
路径对应的方法中返回的结果为string类型
'''
if isinstance(result, str):
return [bytes(result, encoding='utf-8')]
else:
'''
路径对应的方法中返回的结果为读取html文件后的结果
'''
return [result]
2.mvc和mtv,django用的是mtv模式
mvc:model,view,contoller
m中:数据库处理
c中:业务处理
v中:html页面
MTV:model,template,view
t中:html页面
v中:业务处理
m中:数据库处理
3.pycharm中生成app目录
H:\my_django>python manage.py startapp web
4.django创建步骤
一、创建app
二、url映射
三、处理url的函数
四、运行django程序:python manage.py runserver
五、访问url网站
5.django2.0版本中url匹配正则表达式需要导入re_path模块
from django.contrib import admin
from django.urls import path, re_path
from web.views import *
urlpatterns = [
path('admin/', admin.site.urls),
path('index/', index),
# 正则表达式匹配需要导入模块:re_path,否则无法识别使用
re_path(r'manage/(\d*)/', manage),
path('login/', login),
]
6.默认参数设置。
注:path中的$符号使用后:在输入url路径时,最后缺少“/” 回车时,url会自动补充
re_path(r'login/(?P<name>\w*)/$', login, {'id': 234}),在view中设置
path的默认参数值,后台函数中def login(request, name, id)需要添加id参数
7.url中path路径设置
from django.urls import path, re_path, include
import web
urlpatterns = [
# include表示会找到web目录下url文件中的path路径
path('web/', include('web.url')),
]
web.url如下:
from django.contrib import admin
from django.urls import path, re_path
from web.views import *
urlpatterns = [
path('admin/', admin.site.urls),
path('index/', index),
# 匹配正则表达式需要导入模块re_path
re_path(r'manage/(\d*)/', manage),
re_path(r'login/(?P<name>\w*)/(?P<id>\d*)/$', login),
re_path(r'login/(?P<name>\w*)/$', login, {'id': 234}),
]
8.关联数据库的操作
1.创建数据库
2.配置文件setting里连接数据库
3.创建model,继承自models.Model类
静态字段 = models.CharField(max_length=50)
4.生成数据库表的命令:
python manage.py makemigrations
python manage.py migrate
5.修改model
6.再执行步骤4即可
9.设置数据库表列的默认值
age = models.IntegerField(default=19)
gender = models.BooleanField(default=False)
memo = models.TextField(default=‘是’)
date = models.DateField(default=‘2019-12-12’)
10.设置数据库的外键
UserType为关联的数据表,关联的为主键
type_id为当前表中添加的外键
type_id = models.ForeignKey(‘UserType’, on_delete=models.SET_DEFAULT, default=1)
11.设置数据库的多对多关系
设置后会自动生成一个多对多的关系表
class Group(models.Model):
name = models.CharField(max_length=20)
class User(models.Model):
email = models.CharField(max_length=40)
group_relation = models.ManyToManyField('Group')