一、下载与配置
1、安装python
python3详细安装教程_超级小的大西瓜的博客-CSDN博客_python3安装
2、安装Django
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple Django
3、安装MySQL
mysql安装教程【安装版】_超级小的大西瓜的博客-CSDN博客_mysql安装教程
二、创建
1、创建项目
django-admin startproject xxx
2、启动
python manage.py runserver
3、创建应用
python manage.py startapp xxx
三、配置文件(settings.py)
项目同名目录下settings.py
Django配置大全_超级小的大西瓜的博客-CSDN博客_django配置
1、导入os
import os
2、调试模式
DEBUG = True
3、请求头HOST的值
ALLOWED_HOSTS = ["*"]
#[]空列表 表示请求头中host为127.0.0.1,localhost能访问本项目
#['*']表示任何请求头的host都能访问到当前目录
#['192.168.1.3','127.0.0.1']表示只有当前两个host头的值能访问当前项目(公网ip或域名)
4、禁用csrf中间件(如果不禁用post请求会出现问题)
MIDDLEWARE = [
......
#'django.middleware.csrf.CsrfViewMiddleware',
......
]
5、TEMPLATES(模板(HTML文件)存放位置)
TEMPLATES = [
{
......
'DIRS': [os.path.join(BASE_DIR,'templates')],
#模板储存位置(表示存放在与manage.py同级templates目录下,可以自己修改需要的位置)
......
}
]
6、static静态文件(js\css\img)
使用案例:配置后使用(127.0.0.1/static/js/my.js)即可获得(js目录下的my.js文件)
STATIC_URL = '/static/' #静态文件的路由
STATICFILES_DIRS = (os.path.join(BASE_DIR,'static'),)
#静态文件位置(表示存放在与manage.py同级static目录下,可以自己修改需要的位置)
#注意:STATICFILES_DIRS 是一个元组,不要忘记了后面的逗号,不然会报错哦
7、语言 LANGUAGE_CODE
LANGUAGE_CODE = 'zh-Hans'
#英文:'en-us'
#中文:'zh-Hans'
8、时区 TIME_ZONE
TIME_ZONE = 'Asia/Shanghai'
#世界标准时区:'UTC'
#中国时区:'Asia/Shanghai'
9、数据库配置
默认为sqlite
注意:需要先创建需要连接的数据
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME':'需要连接的数据库名字',
'USER':'root',#数据库名字用户名
'PASSWORD':'123456',#数据库密码
'HOST':'127.0.0.1',
'PORT':'3306',#端口
'OPTIONS': {'charset':'utf8mb4'}, #打开数据库 编码格式 ——解决4字节表情无法储存问题
}
}
如果出现错误:Did you install mysqlclient
# 如果出现 Did you install mysqlclient?
# 先安装pymysql库
# pip install pymysql
# 在__init__.py中添加
import pymysql
pymysql.install_as_MySQLdb()
10、注册应用 INSTALLED_APPS
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
#往后添加应用
'User',
]
四、连接应用
创建应用Test---注册应用
1、修改应用的view.py
from django.shortcuts import render
#导入HttpResponse
from django.http import HttpResponse
# Create your views here.
def set(request):
return HttpResponse("访问成功")
2、在应用目录下创建文件urls.py
from django.urls import path
from . import views
urlpatterns = [
# 设置访问路径(拼接路由)
path('set/',views.set),
]
3、修改项目目录同名下的urls.py
from django.contrib import admin
#增加include
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
#访问应用的路由, 跳转的应用
path('Test/',include("Test.urls"))
]
访问:http://127.0.0.1:8000/Test/set/
出现:访问成功
五、处理请求
六、数据库
1、安装pymysql(数据库引擎)
pip install pymysql
2、配置数据库(修改settings.py配置信息)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME':'需要连接的数据库名字',
'USER':'root',#数据库名字用户名
'PASSWORD':'123456',#数据库密码
'HOST':'127.0.0.1',
'PORT':'3306',#端口
'OPTIONS': {'charset':'utf8mb4'}, #打开数据库 编码格式 ——解决4字节表情无法储存问题
}
}
3、models.py(数据模块,用于数据库设计)
这里创建一个用户表
from django.db import models
# 需要创建应用
# Create your models here.
# 数据表名 应用名_类名
class Users(models.Model):
uese_name = models.CharField('用户名',max_length=255,null=True)
phone_number = models.CharField('手机号',max_length=20)
password = models.CharField('密码',max_length=255)
register_date = models.DateTimeField('注册时间',auto_now_add=True)
#CharField和DateTimeField----数据类型
#max_length----最大长度
#auto_now_add----默认时间为创建时间
4、生成数据表(迁移文件)
生成迁移文件(在终端执行如下命令)
python3 manage.py makemigrations
执行迁移文件(在终端执行如下命令)
python3 manage.py migrate
5、数据库增删改查
增
Users.objects.create(
uese_name="CY",
phone_number="1234567890",
password="123456"
)
删
Users.objects.filter(uese_name="CY").delete()
改
sql = Users.objects.get(uese_name="CY")#在查不到不到会报错
sql.password = "8888888"
sql.save()#提交数据 只有提交后才会被修改
查
#获取表中的所有内容
Users.objects.all()
#获取一条内容
sql = Users.objects.get(uese_name="CY")#在查不到不到会报(DoesNotExist)
#处理方法
try:
sql = Users.objects.get(uese_name="CY")
#输出手机号
print(sql.phone_number)
except Users.DoesNotExist:
return HttpResponse("操作失败,用户不存在")
#获取多条内容
Users.objects.filter(uese_name="CY")
#判断某个值是否存在->bool
Users.objects.filter(uese_name="CY").exists()
#模糊查询(__icontains表示包含)
Users.objects.filter(uese_name__icontains="CY")
七、上传文件
def set(request):
import os
file_obj = request.FILES.get('file') #获取文件
filename = os.path.join("media/",'文件名'+os.path.splitext(file_obj.name)[1])
#('保存路径','文件名(需要带后缀)')
#os.path.splitext(file_obj.name)[1]获取文件后缀名
#开始保存
with open(filename, 'wb') as f:
data = file_obj.file.read()
f.write(data)
return HttpResponse("保存成功")