初识django框架(二)
静态文件
什么是静态文件?
- 静态文件: 写好的文件不会动态变化的文件资源,比如css文件,js文件,图片文件,第三方框架等等
- 墨守成规的将这些文件放在自创的static文件夹中,在金太文件夹中创建css、js、img、others文件夹
配置静态文件,拿第三方框架bootstrap来举例子,如果用到静态文件,需要settings.py中配置,配置好的bootstrap的绝对路径只从根目录写就OK了
'''settings.py'''
import os
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static')
]
'''urls.py'''
from app03 import views
urlpatterns = [
path('admin/', admin.site.urls),
path('login/',views.login)
]
'''views.py'''
def login(request):
return render(request, 'static/login.html')
'''login.html'''
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link href="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<div class="row">
<h1 class="text-center">用户登录</h1>
<div class="col-md-8 col-lg-offset-2">
<form action="">
<div class="form-group">
<label for="exampleInputEmail">Email address</label>
<input type="email" class="form-control" id="exampleInputEmail" placeholder="Email">
</div>
<div class="form-group">
<label for="exampleInputPassword1">Password</label>
<input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
</div>
<button type="submit" class="btn btn-primary btn-block">Submit</button>
</form>
</div>
</div>
</div>
</body>
</html>
ps: 配置静态文件完成后,那么在static文件下都可以通过路径来访问到,例如:127.0.0.1:8000/static/a.txt
静态文件配置及访问顺序
静态文件
import os
STATIC_URL = '/static/' # 接口前缀,不是文件名,类似于'令牌'
'''
如果想要访问静态文件资源必须以static开头,如果韩国写了接口前缀之后,下面的静态配置文件下的文件都可以访问
'''
# 静态文件配置,可以写多个,访问的顺序是从上往下依次查找
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static'),
os.path.join(BASE_DIR,'static1'),
os.path.join(BASE_DIR,'static2')
]
动态解析
涉及到接口前缀的修改繁琐的问题,那么现在使用动态解析的语法来实现,修改了接口前缀也能够动态解析,从而不需要挨个文件的修改
<!--静态配置-->
<script src="/static/JS/bootstrap.min.js"></script>
<script src="/static/JS/jQuery3.6.js"></script>
<!--上下对比-->
<!--动态解析配置-->
{% load static%}
<link rel="stylesheet" href="{% static '\CSS\bootstrap.min.css' %}">
<script src="{% static '\JS\bootstrap.min.js' %}"></script>

request对象方法
提交表单出现403错误,如何解决?
settings.py文件注释掉'django.middleware.csrf.CsrfViewMiddleware
request方法
- request.method: 获取当前请求方式
- request.body: 以二进制的形式返回用户提交的数据
- request.POST: 以字典的形式返回用户提交的数据
from django.shortcuts import render,HttpResponse,redirect
# Create your views here.
def login(request):
print(request.method,type(request.method)) # GET <class 'str'>
print(request.POST)
if request.method == 'POST':
return HttpResponse('post请求返回结果')
return render(request, 'static/login.html') # GET请求返回页面
如何获得URL?后面的参数?
request.GET方法: 和request.POST方法是一样的,返回一个字典
request.GET.get(k): 获取字典中的value,返回字符串
request.GET.getlist: 获取用户数据,获取到整个列表
文件对象如何获取?
针对表单提交的文件对象,如何获取?这里不能使用request.POST或者request.GET方法,使用request.FILES方法,返回结果来看是一个字典
- 获取表单提交文件对象方法: request.FILES
方法有了,返回的是一个字典,在表单中添加enctype参数,再提交就可以获取到文件对象
django连接MySQL
django默认连接的是sqlite,这里介绍如何连接MySQL数据库
# 1.修改配置文件
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
-------------------------------------------
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '数据库',
'HOST':'ip地址',
'PORT':3306,
'USER':'用户名',
'PASSWORD':'密码',
'CHARSET':'utf8'
}
}
# 数据库使用是提前创好的!!!
# 2.在项目文件夹或应用文件夹的__init__.py文件中书写固定代码
'''__init__.py'''
import pymysql
pymysql.install_as_MySQLdb()




浙公网安备 33010602011771号