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()

 

posted @   临江沂水  阅读(116)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示