Django项目是一个python定制框架,采用了MVT的框架模式,即模型M,视图V和模板T
命令行式
#1.cmd
>>django-admin startproject project_name
#2.切换到项目文件夹下
#>>python2 manage.py runserver 127.0.0.1:8000(可指定ip地址)
>>python3 manage.py runserver
#3.创建应用(django支持多应用开发)
>>python3 manage.py startapp app_name
'''
注意:
1.不会自动创建templates文件夹
2.配置文件中不会自动书写templates文件路径
'''
Django中的app
Django是一个以开发app为主要功能的web框架
一个app是一套Django功能的集合,通常包括模型和视图,按python的包结构的方式存在
Django为app提供了前期的环境配置
*创建好的app需要在Django配置文件中注册方可生效
Django框架就是为了开发app,而app的工作过程本质就是根据不同的请求返回不同的数据
Django框架将工作过程分为四层:
settings.py 暴露给用户可以配置的配置文件
urls.py 路由和视图函数的对应关系
Django的入口文件
migrations文件夹 所有数据库的相关操作记录
admin.py Django-admin后台管理
apps.py 注册app使用
models.py 存放数据库所有有关的模型类
tests.py 测试文件
views.py 处理业务逻辑的视图函数
#HttpRespnonse 返回字符串
def httpresp(request):
return HttpRespnonse('这是一个字符串')
#render 返回html文件,可以给html页面传值
def ren(request):
user_dic = {'username':'slk'}
return render(request,'login.html',{'user_info':user_dic})
#redirect 重定向,可以是本网站的路径后缀,也可以是全路径
def home(request):
return redirect('https://baidu,com')
retur redirect('/add_user/') #如果是本网站路径后缀要加斜杠
静态文件配置
默认情况下,所有的html文件都是放在templates文件夹内
静态文件是指网站所用到的提前写好的css、js、第三方的前端模块以及图片等静态资源
默认情况下,网站所用到的静态文件资源全部放在static文件夹(需要手动创建)下,static文件夹下可以在细分css文件夹、js文件夹、font文件夹、img文件夹、Bootstrap文件夹以及fontawesome文件夹等
路径配置
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
静态文件夹的动态绑定
#在html的py文件中
{% load static %}
<link rel="stylesheet" href="{% static 'css文件相对路径' %}">
<script src="{% static 'js文件相对路径' %}"></script>
前期在向后端提交post请求出现403,需要在配置文件中注释一行内容
# 中间件
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
连接数据库
#配置文件
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 指定数据库类型
'NAME': 'day49', # 指定库的名字
'USER':'root', # 注意 键必须是全大写
'PASSWORD':'123qwe',
'HOST':'127.0.0.1',
'PORT':3306,
'CHARSET':'utf8'
}
}
#更改连接模块
#在项目名下的__init__.py 或 应用名下的__init__.py 中
import pymysql
pymysql.install_as_MySQLdb()
orm 对象关系映射 缺点:封装程度太高,效率偏低;一个项目对应一个数据库
数据库中已有记录,要新建字段
CharField字段,必须要有max_length属性
与数据库结构相关的修改,必须要有数据库迁移命令
>>python manage.py makemigrations
>>python manage.py migrate
默认帮你定义了id(主键),自定义的是主键AutoField()
获取请求方式
type_of_request = request.method(都是大写)
获取请求数据
#如果是a标签中href中携带的数据也用GET
#当请求方式是GET时,一般使用render返回页面
name = request.GET.get('name')
#当请求方式时POST时,一般使用redirect重定向一个页面
name = request.POST.get('name')
数据库操作
#增
new_obj = models.ClassName.objects.create(key=value)
#删 根据filter查询的结果批量操作
models.ClassName.objects.filter(key=valus).delete()
#改 根据filter查询结果批量操作
models.ClassName.objects.filter(key=value).update(key=value)
#查
obj_list = models.ClassName.objects.filter(key=value)
obj = obj_list.first()
all_obj_list = models.ClassName.objects.all()
#等价于
all_obj_list = models.ClassName.objects.filter()
django是默认重启的,内有检测机制,实时检测所有文件的变化
form表单默认请求方式是get请求,也能携带极小量的数据而且不安全
<a href="http://127.0.0.1:8000/login/?username=jason&password=jason123"></a>
原文:https://www.cnblogs.com/shenblog/p/11918418.html