Djanjo
一、静态文件
什么是静态文件
- 静态文件:写好的文件不会动态的改变的的文件的资源 比如css 文件,js文件 图片文件,第三方框架等
- 墨守成规的将这些文件放在自创 static文件夹中 在静态文件夹中创建css,js, img,other文件夹.....
配置静态文件 那第三方框架bootstrap来举例,如果用到静态文件,需要setting.py配置 配置好bootstrap的绝对路劲 只从根目录写起就好了
再需要写静态文件,再static中写就好了
'''settings.py''' STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static') ]eg:
'''urls.py''' from django.contrib import admin from django.urls import path from app01 import views urlpatterns = [ path('admin/', admin.site.urls), path('login/', views.login), ] '''views.py''' from django.shortcuts import render # Create your views here. def login(request): return render(request,'login.html')"en"> "UTF-8">Title "stylesheet" href="/static/CSS/bootstrap.min.css">class="container">class="row">class="text-center">用户登录
class="col-md-8 col-lg-offset-2">
- 配置静态文件完成之后 那么在static文件下的文件都可以通过路径访问到 eg:
127.0.0.1:8000/static/a.txt- 如果DJango主页面不能访问了,在urls.py文件中写一个默认的对应关系的补充
静态文件配置及访问的顺序
静态文件
STATIC_URL = '/static/' # 接口前缀,不是文件名,类似"令牌" ''' 如果你想要访问静态文件资源必须以static开头,如果写了接口前缀之后,下面的静态配置文件下的文件都能够访问 ''' # 静态文件配置,可以写多个,访问的顺序是从上往下依次查找 STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static'), os.path.join(BASE_DIR,'static1'), os.path.join(BASE_DIR,'static2'), ]动态解析
- 涉及到接口前缀的修改繁琐的问题 那么现在使用的动态解析的语法来实现,修改了接口前缀也能够动态解析,从而不需要挨个文件的修改!
{% load static%} "stylesheet" href="{% static '\CSS\bootstrap.min.css' %}">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)) # GETif request.method=='POST': return HttpResponse('POST请求返回结果!') return render(request,'login.html') # GET请求返回页面 注意:
request.POST返回的字典用get方法获取列表形式的value,返回的是字符串,get方法只会取列表的最后一个元素# 在获取用户多选或者提交的信息是多条,返回在一个列表内如何获取用户数据呢? 使用request.POST.getlist方法,返回一个列表,就不再使用get方法了 def login(request): print(request.method, type(request.method)) # GETprint( request.POST) print( request.POST.get('Email')) # 123@qq.com print( request.POST.getlist('Email')) # ['123@qq.com'] if request.method=='POST': return HttpResponse('POST请求返回结果!') return render(request,'login.html') # GET请求返回页面 GET请求方式的方法是一样的
如何获取URL
?后面的参数?
request.GET方法:和request.POST方法是一样的,返回字典
request.GET.get(k):获取字典的value,返回字符串
request.GET.getlist(k):获取用户数据,获取到整个列表文件对象如何获取??
针对表单提交的文件对象,如何获取?这里不能使用request.POST或者request.GET方法,使用
request.FILES方法,返回结果看成字典即可
- 获取表单提交文件对象的方法:
request.FILES方法有了,返回的是空字典,在表单中添加
enctype参数,再提交就可以获取到文件对象