Django三板斧与静态文件配置
Django三板斧
HttpResponse
可以给页面返回一个字符串类型数据
from django.shortcuts import render, HttpResponse, redirect def register(request): return HttpResponse('注册成功')
render
返回一个HTML页面
from django.shortcuts import render, HttpResponse, redirect def login(request): return render(request, 'login.html') def login(request): return render(request, 'login.html',local()) # 第三个参数是将该局部名称空间的名字都传给HTML页面使用 def login(request): a = 1 b = 2 return render(request, 'login.html',{'a':a,'b':b}) # 将字典内的K键传递给HTML页面使用
redirect
该方法是重定向,可以指定一个网址也可以是本地的
from django.shortcuts import render, HttpResponse, redirect # 重定向到一个网址 def register(request): return redirect('www.baidu.com') # 重定向到本地的页面 def register(request): return redirect('/login/')
静态文件配置
静态文件就是一些写死了的文件,例如js文件,css文件,图片等
pycahrm创建静态文件时不会给我们创建一个存放静态文件的文件夹,所以我们一般都需要在项目中创建一个static文件夹,将需要的静态文件都放在这个文件夹下
修改settings配置文件
STATIC_URL = '/static/' # 这是一个令牌,读取静态文件时需要使用 STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] # 静态文件字典,有几个静态文件夹都可以写在这里,需要自己手动添加
修改HTML导入方式
# 方式一 # /static/ 是令牌,如果令牌修改了这里的static也要修改 <link rel="stylesheet" href=" /static/bootstrap-3.4.1-dist/css/bootstrap.css'"> <script src= '/static/bootstrap-3.4.1-dist/js/bootstrap.js' ></script> # 方式二 #该方法不需要管令牌是什么,是动态获取的 {% load static %} <link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.css' %}"> <script src={% static 'bootstrap-3.4.1-dist/js/bootstrap.js' %}></script>
form表单
提交数据
<form action=""> ''' 1. 什么都不写,提交到当前页面 2. 全写:https://passport.baidu.com/v2/api/?login 3. 只写后缀 /login/ => 自动补全ip和端口 http://127.0.0.1:8000/login/ '''
get请求和post请求的区别
get请求:
1. get没有请求体
2. 对数据大小的限制是4KB
3. 不安全
post请求:
1. post才有请求体
2. 对数据大小没有限制
3. 安全
request方法
""" request.method # 获取当前页面的请求方法 request.POST # POST请求的方法 request.GET # GET请求的方法 request.FILES # 获取文件数据 request.body request.path request.path_info request.get_full_path() 能过获取完整的url及问号后面的参数 """ print(request.path) # /app01/ab_file/ print(request.path_info) # /app01/ab_file/ print(request.get_full_path()) # /app01/ab_file/?username=jason
form表单上传文件及后端操作
""" form表单上传文件类型的数据 1.method必须指定成post 2.enctype必须换成formdata request.FILES request.FILES.get('file') """ def ab_file(request): if request.method == 'POST': # print(request.POST) # 只能获取普通的简直对数据 文件不行 print(request.FILES) # 获取文件数据 # <MultiValueDict: {'file': [<InMemoryUploadedFile: u=1288812541,1979816195&fm=26&gp=0.jpg (image/jpeg)>]}> file_obj = request.FILES.get('file') # 文件对象 print(file_obj.name) with open(file_obj.name,'wb') as f: for line in file_obj.chunks(): # 推荐加上chunks方法 其实跟不加是一样的都是一行行的读取 f.write(line) return render(request,'form.html')
Django链接MySQL数据库
1.配置文件
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'day60', 'USER':'root', 'PASSWORD':'admin123', 'HOST':'127.0.0.1', 'PORT':3306, 'CHARSET':'utf8' } }
2.代码声明
在Python3.6以前,django默认用的是mysqldb模块链接MySQL
但是该模块的兼容性不好 需要手动改为用pymysql链接
你需要告诉django不要用默认的mysqldb还是用pymysql
# 在项目名下的init或者任意的应用名下的init文件中书写以下代码都可以 import pymysql pymysql.install_as_MySQLdb()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通