django-admin startproject projectname
创建项目

cd projectname
进入项目文件

python3 manage.py startapp appname
创建app项目应用
可以创建多个也就是项目的不同功能模块

使用pycharm或其他工具打开项目

打开projectname/settings.py文件
找到INSTALLEN_APPS的字典
在末尾添加你刚刚写的几个或一个appname
这被叫做注册

打开projectname/urls.py
from django.conf.urls import include
配置urls
在urlpatterns的字典中添加url(r’^appname/’,include(‘appname.urls’))

在manage.py同一个级别的下新进templates文件夹
在projectname/settings.py中注册templates
找到TEMPLATES字典中的’DIRS’: []
在[]中添加os.path.join(BASE.DIR,‘templates’)

在projectname/settings.py中
配置数据库
mysql
找到DATABASES字典中default字典
修改
‘ENGINE’: ‘django.db.backends.sqlite3’,
‘NAME’: os.path.join(BASE_DIR, ‘db.sqlite3’),

‘ENGINE’: ‘django.db.backends.mysql’,
‘NAME’: projectname #你的数据库的name
添加
‘USER’:‘root’,
‘PASSWORD’:‘root’,
‘HOST’:‘0.0.0.0’,
‘PORT’:3306

在projectname/settings.py中配置支持中文

LANGUAGE_CODE =
TIME_ZONE =

改为
LANGUAGE_CODE = ‘zh-hans’
TIME_ZONE = ‘Asia/Shanghai’

设置静态文件目录
和manage.py同级创建static文件夹
在projectname/settings.py中末尾
添加
STATICFILES_DIRS=[os.path.join(BASE_DIR,‘static’)]

配置app中的urls

在appname/urls.py
若没有urls.py
就新建一个urls.py
中写
from django.conf.urls import url
urlpatterns=[]

数据库映射模型
所有的app文件夹中都会有一个models.py文件
这个文件就是将相应的数据类映射到数据库代码
基本是类的方式一个类代表一个表
一个变量代表一个字段

数据库模型写完后要
输入python3 manage.py makemigrations
python3 manage.py migrate

接下来可以启动项目了
python3 manage.py runserver
测试没问题

可以写业务了

总结上面
1.创建django项目
2.创建app
3.配置settings,templates static mysql urls配置
4.创建models
5.将模型更新为实体数据库
6.将前端页面文件对应的cpoy到相应的文件中
7.写视图处理函数改写前端页面实现交互
7.1 配置app内的urls写相应的视图处理函数 改写前端页面的文件加载路径
7.2 完成相应的逻辑处理

7.3
例如登录注册
首先处理登录注册 的form表单 添加表单属性method=post
action=‘/register_handler/’
form表单要添加
{%csrf_token%}
而后写是处理函数register_handler
配置urls
register_handler
要写的内容为
处理注册信息
接收数据
如验证用户是否存在
若数据没问题
就进行注册
使用框架自带的方法
User.objects.create_user(username,emial,password)
注册后跳回首也
使用重定向redirect(reverse(‘goods:index’))
也可以使用post 或get请求
区分是注册还是处理注册
就可以使用一个地址了
也可以使用类视图
from django.views.generic import View
类视图会自动区分get
继承自View
还是post
调用的时候使用as_view()即可
发送邮箱认证的时候要使用加密
保护用户身份信息
加密可使用
itsdangerous
from itsdanagerous import TimedJSONWebSinatureSerializer as Serializer
s=Serializer(SECRET_KEY,time)
time为有效时间单位为秒
serdata=s.dumps(data)加密
s.loads(serdata)解密
将加密的数据+前面的url
配置urls使用正则子组捕获加密数据调用激活视图函数
接收用户信息对比后激活用户
激活或跳转到登录页面

Django提供后台管理数据库

首先要建立一个超级管理员用户
在终端输入python3 manage.py createsuperuser
而后设置用户名字和密码

接着要将要管理的数据库
添加到后台管理员管理范围内
打开projectname/admin.py
里面写入
from django.contrib import admin
from appname.models import modelsname
注册要被管理的库到后台管理中
admin.site.reginster(modelname)
自定义模型管理类
可以控制显示的内容等操作
class modelnameadmin(admin.ModelAdmin):
。。。。。。。。。
使用自定义后必须指出其控制的是哪个类
admin.site.reginster(modelname,modelnameadmin)

启动项目 python3 magage.py runserver

打开浏览器输入localhost /admin/
进入管理页面

在manage.py同级下创建db文件夹
文件中穿件一个base_model.py
在base_model.py中写
from django.db import models
class BaseModel(models.Model):
“”“抽象基类”“”

create_time=models.DateTimeFile(auto_now_add=True,verbose_name=‘创建时间’)
update_time=models.DateTimeFile(auto_now=True,verbose_name=’更新时间’)
is_delete=models.DateTimeFile(default=False,verbose_name=‘删除标记’)

class Meta:
abstract=True

一 django-admin startproject 哒哒哒哒哒哒多多多多
配置settings.py

配置语言为中文
LANGUAGE_CODE = ‘zh-hans’

TIME_ZONE = ‘Asia/Shanghai’
配置数据库 数据库配置
DATABASES = {
‘default’: {
‘ENGINE’: ‘django.db.backends.mysql’,
‘NAME’:‘dailyfresh2’,
‘USER’:‘root’,
‘HOST’:‘127.0.0.1’,
‘PASSWORD’:‘111111’,
‘PORT’:3306
}
}

静态地址 STATICFILES_DIRS=[os.path.join(BASE_DIR,‘static’)]
tempelets DIRS:[os.path.join(BASE_DIR,‘templetes’)]

模块配置创建
django-admin startapp newapp

app注册
appINSTALLED_APPS = [
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
‘newapp’
]

urls 配置
主urls
from django.conf.urls import url,include
from django.contrib import admin

urlpatterns = [
url(r’^admin/’, admin.site.urls),
url(r’^index/’, include(‘newapps.urls’)),

]

app里的urls

from django.conf.urls import url, include

from user import views
urlpatterns = [
url(r’^register ′ , v i e w s . r e g i s t e r , n a m e = ′ r e g i s t e r ′ ) , u r l ( r ′ r e g i s t e r h a n d l e r ',views.register,name='register'), url(r'^register_handler ,views.register,name=register),url(r′registerh​andler’,views.register_handler,name=‘register_handler’)
]

视图处理

from django.shortcuts import render
from django.http import HttpResponse

Create your views here.

def shouye_views(request):
return HttpResponse(“Hello World!”)
return render(request,‘文件名.html’)
在template中即可找到

urls高级
子组传参到视图函数

url(r’^(?P[0-9]+)/$’,shouye_views,name=‘shouye’),

def shouye_views(request,id):
print(id)
return HttpResponse(‘hdsau’)

视图处理高级
request接收参数

print(zizu)
print(request.path)
print(request.GET.get('name'))
print(request.method)
return render(request,'hellow.html',locals())

视图调用函数中的变量
{{任意函数中的变量}}

数据库映射类
创建模型类
最好类名和所在的app名类似
from django.db import models

Create your models here.

class Newapp(models.Model):
name=models.CharField(max_length=30)
age=models.IntegerField()

生成数据库依赖文件
在app目录下的migrations中
python3 manage.py makemigrations

生成相依的数据库
python3 manage.py migrate

Apply all migrations: admin, auth, contenttypes, newapp, sessions

每次更新数据库模型类都要执行的这两句话

使用 Django 提供的 shell
管理数据库
python3 manage.py shell

添加一个数据

from newapp.models import Newapp
Newapp.objects.create(name=‘wizhontu’,age=12)
<Newapp: Newapp object>

查询数据

Newapp.objects.get(age=12)
<Newapp: Newapp object>
查出来是对象不是数据
所以要修改类中的一个叫 __str__内置函数
def str(self):
return self.name
将上两行写在类中即可

注意 在覆盖内置函数时不用执行
python3 manage.py makemigrations
python3 manage.py migrate

这两句话

只用添加字段
和写其他方法和类的时候
执行他们
python3 manage.py makemigrations
python3 manage.py migrate

创建一对多需要在多的表中建立外键
根据一表查多表时候使用一表中写的关联变量_set查询

多对多
一对一
一样写一个即可
查询时直接访问类名小写即可

例子
print(User.objects.filter(id=1).values(‘username’))
使用values可得到想要字段的字典

多对多插入数据时最好先插入没写关联变量的那个表
通过查该表创建另一个表有关的数据
同样反过来也可以

Book.objects.create(bookname=‘bb%d’%i,bookpage=300).uers.add(*(User.objects.filter(Q(id__gte=random.randrange(10)))))