day61
day 61 路由,orm
##################################
路由系统:
1.伪静态:搜索引擎喜欢.html结尾的文件,所以要搞这个伪静态
seo: 搜索引擎优化技术,就是研究各大网站搜索引擎的收录规则.
html里面.meta的标签:用来描述整个网站信息.
keywords关键字,就是你搜索的时候搜索这些字可以搜出来这个网站
###如何实现伪静态
正则表达式匹配
url(r'^index/(\w+)/', index),
相应的需要在函数里接受这个值
def index(request,name):
return HttpResponse('OK')
##在最下面加入
自定义一个404页面
def notfound(request):
return HttpResponse("404 not found")
url(r'^',notfound),
#############
####反向路由:直接可以通过xxx来识别
html里面
<form action="{% url 'xxx' %}">
用户:<input type="text" name="username">
密码:<input type="password" name="pwd">
<input type="submit" value="提交">
后台里
url(r'^login/',login,name='xxx'),
#############路由分组
所有的业务逻辑处理函数,都写到一起了,需要更改
##django创建app
python3(看你安装的python.exe文件,如果是python3就写python3) manage.py startapp app01
app01里面的文件
admin.py是写与django-admin有关的配置的
apps:配置,用得少
models:orm数据表模型
tests:测试用的
views:视图函数(业务逻辑的)
##如果app01和app02还有03里面都有views,导入的话,就冲突了.
涉及到路由分组
首先总的urls里面要导入include
url(r'^app02/',include('app02.urls'))
然后到app02下面的urls里面的配置
from django.conf.urls import url,include
from app02 import views
urlpatterns =[
url(r'^teachers/',views.teacher)
]
去找views下面的teacher
###views文件
from django.shortcuts import render,HttpResponse
# Create your views here.
def teacher(request):
return HttpResponse("teacher")
####结果
顺序图
######视图函数
FBV:用函数写视图
CBV:用类写视图
#######首先要导入在views文件里面,主要是CBV
from django.views import View
class Login(View):
def get(self,request):
return render(request,'login.html')
def post(self,request):
uname=request.POST.get('username')
print(uname)
return HttpResponse('ok')
#####urls文件路由
url(r'^login/',views.Login.as_view()),
#######html里面
<form action="/app03/login/" method="post">
用户:<input type="text" name="username">
密码:<input type="password" name="pwd">
<input type="submit" value="提交">
######orm配置
1创建数据库
2.配置文件里面配置
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 's8day61', ## 数据库名称
'USER': 'root',
'PASSWORD': '123', ## 安装 mysql 数据库时,输入的 root 用户的密码
'HOST': '127.0.0.1',
}
3注册app
配置文件里面INSTALLED_APPS下面加上app02,和app03
在里面配置才会生成相应的表
###将mysqldb换成pymysql
app下的 __init__.py文件
import pymysql
pymysql.install_as_MySQLdb()
####然后再models.py里面,创建表
from django.db import models
# Create your models here.
#id可以不写,会自动生成
class UserInfo(models.Model):
id=models.AutoField(primary_key=True)
name=models.CharField(max_length=32,null=True)
age=models.CharField(max_length=32,null=True)
email=models.CharField(max_length=32,default="") ##或者设置默认值
####然后再到命令行里面敲命令
python manage.py makemigrations
python manage.py migrate
##改列名还是需要走命令
###外键 一对多
##部门
class Department(models.Model):
title=models.CharField(max_length=32,null=True)
##用户表加一个列,和Department表建立外键关系
ud=models.ForeignKey("Department",null=True)