框架解析
MVT框架
M:数据层【数据库】Model.py
V:业务层【查询数据库、处理路由请求业务】view.py
T:表现层(前后端不分离)【模板、html】template文件夹
manage.py Django管理引擎 驱动相关命令 python manage.py [相关命令]
- project #项目总控文件夹
- settings.py # 全局配置
- urls.py # 总路由
- wsgi.py # nginx/apache相关
- init.py # 全局初始化(一般不用)
- app # 应用
- admin.py # 将数据表注册到后台管理
- models.py # 数据层
- urls.py # 分路由
- view.py # 业务层
- init.py # 初始化(一般不用)
基本配置
BASE_DIR
当前项目的绝对路径 ( 动态计算出来的 )
DEBUG
用于配置 Django 项目的启用模式 , 取值 :
1. True 表示开发环境中使用 调试模式 ( 用于开发中 )
2. False 表示当前项目运行在生产环境中 ( 不启用调试 )
ALLOWED_HOSTS
设置允许访问到本项目的网络地址列表 , 取值 :
- [] 空列表 , 表示只有 127.0.0.1, localhost, ‘[::1]’ 能访问本项目
- [’*’] ,表示任何网络地址都能访问到当前项目
- [’*.tedu.cn’, ‘weimingze.com’] 表示只有当前两个主机能访问当前项目
注意 :如果要在局域网其它主机也能访问此主机 , 启动方式应使用如下模式 :python3 manage.py runserver 0.0.0.0:5000 # 指定网络设备所有主机都可以通过 5000 端口访问 ( 需加 ALLOWED_HOSTS = [’*’])
INSTALLED_APPS
指定、注册当前项目中安装的应用列表或定义的app
MIDDLEWARE
用于注册中间件
TEMPLATES
用于指定模板的配置信息
DATABASES
用于指定数据库的配置信息
支持SQLite 3(默认)、PostgreSQL 、MySQL、Oracle数据库的操作
SQLit 3(默认)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
MySQL
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME':'dbname', #注意这里的数据库应该以utf-8编码
'USER': 'xxx',
'PASSWORD': 'xxx',
'HOST': '',
'PORT': '',
}
}
如下设置放置的与project同名的配置的 init.py文件中
import pymysql
pymysql.install_as_MySQLdb()
PostgreSQL
DATABASES = {
'default': {
'NAME': 'app_data',
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'USER': 'XXX',
'PASSWORD': 'XXX'
}
Oracle
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.oracle',
'NAME': 'xe',
'USER': 'a_user',
'PASSWORD': 'a_password',
'HOST': '',
'PORT': '',
}
}
LANGUAGE_CODE
用于指定语言配置
取值 :
英文 : “en-us”
中文 : “zh-Hans”
TIME_ZONE
用于指定当前服务器端时区
取值 :
世界标准时间 : “UTC”
中国时区 : “Asia/Shanghai”
ROOT_URLCONF
用于配置根级 url 配置 ‘mywebsite1.urls’
如 :ROOT_URLCONF = ‘mywebsite1.urls’
静态文件
(1)静态文件:不能与服务器端做动态交互的文件都是静态文件
如:图片,css,js,音频,视频,html文件(部分)
(2)在 settings.py 中配置一下两项内容:
1.配置静态文件的访问路径
通过哪个url地址找静态文件
STATIC_URL = ‘/static/’
STATIC_ROOT = os.path.join(BASE_DIR, “/static/”)
基本命令
1、创建一个django project
django-admin.py startproject mysite
当前目录下会生成mysite的工程,目录结构如下:
manage.py ----- Django项目里面的工具,通过它可以调用django shell和数据库等。
settings.py ---- 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。
urls.py ----- 负责把URL模式映射到应用程序。
2、在mysite目录下创建应用,比如blog:
python manage.py startapp blog
3、启动django项目
python manage.py runserver 8080
4、同步更改数据库表或字段
python manage.py makemigrations
python manage.py migrate
这种方法可以创建表,当你在models.py中新增了类时,运行它就可以自动在数据库中创建表了,不用手动创建。
5、清空数据库
python manage.py flush
此命令会询问是 yes 还是 no, 选择 yes 会把数据全部清空掉,只留下空表。
6、创建超级管理员
python manage.py createsuperuser
# 按照提示输入用户名和对应的密码就好了邮箱可以留空,用户名和密码必填
# 修改 用户密码可以用:
python manage.py changepassword username
7、Django 项目环境终端
python manage.py shell
这个命令和 直接运行 python 进入 shell 的区别是:你可以在这个 shell 里面调用当前项目的 models.py 中的 API,对于操作数据的测试非常方便。
8、Django 项目环境终端
python manage.py dbshell
Django 会自动进入在settings.py中设置的数据库,如果是 MySQL 或 postgreSQL,会要求输入数据库用户密码。
在这个终端可以执行数据库的SQL语句。如果您对SQL比较熟悉,可能喜欢这种方式。
9、更多命令
python manage.py
查看所有的命令,忘记子名称的时候特别有用。
常用函数及模板语言
业务层
HttpResponse :它返回到前台传入一个字符串,发送给浏览器。(也可传json)
return HttpResponse("请求成功")
return HttpResponse("<div>请求成功</div>")
return HttpResponse(json.dumps(data))
render:可以传递三个参数 1 request参数,2.渲染的html页面,3.带数据的值。
context['xcols'] = xcols
context['ycol'] = ycol
context['missing'] = missing
context['trainingset_s'] = trainingset_s
context['testset_s'] = testset_s
context['feat'] = feat
context['file_name'] = file_name
context['row_count'] = row_count
return render(request, 'custom_model/preprocessing.html', context)
renderct: url参数 跳转到指定页面
renderct('user:login')
renderct('www.baidu.com/user/login')
JsonResponse:返回json
data = {"msg": "注册成功!"}
return JsonResponse(data)
模板
引导静态文件
{% load staticfiles %}
业务层传递的变量
{{ sudent_name }}
过滤器
{{ name | lower }}
for循环
<ul>
{% for student in student_list %}
<li>{{ student.name }}</li>
{% endfor %}
</ul>
if,elif和else标签
{% if athlete_list %}
Number of athletes: {{ athlete_list|length }}
{% elif athlete_in_locker_room_list %}
Athletes should be out of the locker room soon!
{% else %}
No athletes.
{% endif %}
模板
{% block body_block %}
正文内容
{% endblock %}
重写模板
{% extends "custom_model/base.html" %}
{% block body_block %}
<div class="zhenwen">
欢迎
</div>
{% endblock %}
注册数据表到后台管理
admin.py
from .models import UserProfileProducts
class UserProfileAdmin(admin.ModelAdmin):
pass
# 注册
admin.site.register(UserProfile, UserProfileAdmin)
引用
https://www.cnblogs.com/maplethefox/p/11233909.html
https://www.cnblogs.com/dapianzi/p/8177797.html
https://www.cnblogs.com/liangying666/p/9740041.html
https://www.liujiangblog.com/course/django/145