Django中的文件介绍

render、HttpResponse和redirect

当我们想起手写一个项目,创建好应用并且注册之后,在urls.py文件先导入app文件夹下migrations下的views.py文件

from app01 import views

在urls.py下urlpatterns添加路由与视图函数的对应关系

url(r'^bilibili/', views.bilibili),
url(r'login', views.login),
url(r'^index/', views.index),
url(r'^home/', views.home_page)

这样我们就可以在views视图里面写视图函数了,Django在views.py文件里预先导入了render模块

render

render返回的是一个HTML文件,render方法需要传两个参数request和templates_name

def login(request):
return render(request, 'login.html')

HttpResponse

render返回的是字符串

def index(request):
return HttpResponse('HELLO DJANGO!')

redirect

redirect 重定向,输入网址会跳转到该网址,既可以写其他网址,也可以写我们自己创建的html页面。

def bilibili(request):
return redirect('https://www.bilibili.com')
def index(request):
return redirect('/login/')
# 写自己创建的只需要写后缀就可以了

需要注意的是所有视图函数都需要传request参数,request表示的是请求相关的所有数据对象。

静态文件配置

静态文件通常是指不是由服务器生成的文件,例如脚本,CSS文件,图像等,但是必须在请求时发送给浏览器。

我们通常将HTML文件默认都放在templates文件夹下,将网站所需要的静态文件默认都放在static文件夹下。django默认不会自动创建static文件夹,需要手动创建。

需要在settings.py文件末尾将静态文件接口开放

STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
# 需手动配置

在HTML引入静态文件的两种方式:

{% load static %}
<link rel="stylesheet" href="{% static "bootstrap-5.1.0-dist/css/bootstrap.min.css" %}">
# 这种方式可以动态解析令牌,无论后面怎么改都可以访问

或者:

<link rel="stylesheet" href="/script/css/bootstrap.min.css">

注意:

STATIC_URL = '/static/'

这里的'/static/'表示的是类似于访问静态文件的令牌,如果想要访问静态文件就必须以static开头,当令牌匹配之后才回去STATICFILES_DIRS

列表里从上往下依次查找。都找不到就会报错。

request对象

####### settings.py中 前期先把第四行注释掉,不验证csrf #####

MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

request.method

request.method会返回请求方式,并且是全大写的字符串形式。

# 那么我们就可以通过请求方式做逻辑处理
def login():
if request.method == 'POST':
return HttpResponse('get it')
# return 只会执行一个return
return render(request, 'login.html')

request.POST

request.POST接收post请求数据,会返回一个类似于字典一样的数据,这时候我们可以通过get方法取到里面的值。

# POST方法返回的值 <QueryDict: {'username': ['egon'], 'password': ['123']}> <class 'django.http.request.QueryDict'>
def login():
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
# 这里的键是在前端HTML文件中写好的

需要注意的是get方法取到的value是字符串,并不是看起来像列表的东西,而且get方法只能取到中括号里面最后一个值,想取到所有的值应该用getlist方法,取到的就是列表了。

Django连接MySQL

在settings.py文件里面找到DATABASES配置

# 默认是django自带的sqllite3小型数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}

这时候我们连接到MySQL第一步需要更改它的配置

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': database01, # name对应的是库的名字
'USER':'root'
'PASSWORD':'123'
'HOST':'127.0.0.1'
'PORT':3306,
'CHARSET':'utf8'
}
}
# 第一步之后,如果启动django是会报错的,
# 这是因为django默认用的是mysqldb模块连接MySQL但是该模块兼容性不好
# 需要手动改为pymsql模块进行连接

第二步需要进行代码声明

# 在项目名下的init或者任意的应用名下的init文件中书写以下代码都可以
import pymysql
pymysql.install_as_MySQLdb()

Django ORM

Django 模型使用自带的 ORM。

对象关系映射(Object Relational Mapping,简称 ORM )用于实现面向对象编程语言里不同类型系统的数据之间的转换。

ORM 在业务逻辑层和数据库层之间充当了桥梁的作用。

ORM 是通过使用描述对象和数据库之间的映射的元数据,将程序中的对象自动持久化到数据库中。

ORM本质上还是执行的SQL语句。

创建 MySQL 数据库( ORM 无法操作到数据库级别,只能操作到数据表)语法。

创建表(创建类)

# 1.先去model.py中书写一个类
class User(models.Model):
# id int primary_key auto_increment
id = models.AutoField(primary_key=True)
# username varchar(32)
username = models.CharField(max_length=32)
# password = int
password = models.IntegerField()
# 2.数据库迁移命令(每次改变了跟数据相关的代码)

python3 manage.py makemigrations # 生成迁移记录,不操作数据库

python3 manage.py migrate  # 将操作真正的同步到数据库

由于一张表中必须要有一个主键字段 并且一般情况下都叫id字段,所以当我们不定义主键字段的时候,ORM会自动创建一个名为id的主键字段。

Charfield必须要指定max_length参数,不指定会报错

verbose_name该参数是所有字段都有的,就是用来对该字段的解释说明,类似于注释

字段的增删改查

字段的增加

1、可以在终端内直接给出默认值
2、设置该字段为空
null=True
3、给出该字段的默认值
default='male'

字段的修改

直接修改代码然后执行数据库迁移的命令,相当于把之前的表覆盖。

字段的删除

对应的字段直接注释掉,再执行数据库迁移的命令。需要注意的是执行完毕之后字段对应的数据也没有了

Django静态文件配置 request对象 Django操作MySQL的更多相关文章

  1. Django静态文件配置-request方法-ORM简介-字段的增删改查

    app的创建注意事项: 在Django新创建的app要在seetings.py中添加注册,才会生效 创建app:django-adminapp an startapp app名称 或者 python3 ...

  2. 55 Django静态文件配置

    一.Django静态文件配置 1.项目文件夹,新建一个文件夹statics 文件夹 2.在配置文件settings.py中,配置: 文件中有第句: STATIC_URL = '/static/'#静态 ...

  3. django静态文件配置

    开发环境配置 需要下面几个步骤 1. 在app目录下创建static目录,将静态文件和相关文件夹放到此目录下,如your_app/static/img等 2. 确保settings.py中的INSTA ...

  4. Django——静态文件配置

    本文目的 最近用django开发项目,发现django的静态文件(js,css和img等)配置比较麻烦,开发环境和生产环境的配置还不一样,这里记录一下,作为备忘.我当前使用的版本是django v1. ...

  5. Django 静态文件配置 (Nginx)

    初学Django,在访问静态文件时候遇到很多误区,一直配置不成功,在此记录一下. Django静态文件访问分为两种:一种是Debug模式下,测试开发网站时对静态文件的访问,一种是实际生产环境中对静态文 ...

  6. django静态文件配置和使用

    一.首先需要了解的知识点是: 1.出于对效率和安全的考虑,django管理静态文件的功能仅限于在开发阶段的debug模式下使用,且需要在配置文件的INSTALLED_APPS中加入django.con ...

  7. django 静态文件配置

    配置静态文件 在settings.py中尾部添加一下内容 STATICFILES_DIRS = [ #路径 BASE_DIR:项目文件根目录 os.path.join(BASE_DIR,'static ...

  8. 使用nginx部署Django静态文件配置

    首先,我们配置静态文件,要在setting.py里面加入如下几行代码: # settings.py # the settings above # STATIC SETTINGS STATIC_URL ...

  9. Django 静态文件配置(static files)

    Django version: 1.9 Python versrion: 3.5.2 这几天Django配置静态文件(本例是要加载index.css), 总是不对,最后终于试对了,这里记录下,方便以后 ...

随机推荐

  1. 【Spring】Spring中的循环依赖及解决

    什么是循环依赖? 就是A对象依赖了B对象,B对象依赖了A对象. 比如: // A依赖了B class A{ public B b; } // B依赖了A class B{ public A a; } ...

  2. 「NOIP2017」宝藏

    「NOIP2017」宝藏 题解 博客阅读效果更佳 又到了一年一度NOIPCSP-S 赛前复习做真题的时间 于是就遇上了这道题 首先观察数据范围 \(1 \le n \le 12\) ,那么极大可能性是 ...

  3. Spring Boot(一):如何使用Spring Boot搭建一个Web应用

    Spring Boot Spring Boot 是Spring团队旗下的一款Web 应用框架 其优势可以更快速的搭建一个Web应用 从根本上上来讲 Spring Boot并不是什么新的框架技术 而是在 ...

  4. python pip install matplotlib安装模块

    python pip install matplotlib安装模块,可附带安装相关的模块 程序运行提示: from . import _imaging as coreImportError: DLL ...

  5. urllib3使用池管理发送请求和requests常用方法的基本使用+session使用

    使用urllib3的池管理器 urllib3是在urllib进行更加深入的改进,最大的好处就是在urllib的基础上添加了池管理,以至于我们不需要再去注意我们需要由那个链接去发送请求,而只需要获取到链 ...

  6. Java基础00-基础语法3

    1. 注释 1.1 注释概述 1.2 注释分类 1.3 示例 2. 关键字 2.1 关键字概述 2.2 关键字的特点 3. 常量 3.1 常量的概述 3.2 常量分类 以上常量除了空常量都是可以直接输 ...

  7. ls仅列出当前目录下的所有目录

    ls -d */ -d仅列出目录本身,而不列出其中的内容 *通配符,所有的字符 /目录的标识

  8. Redis主从复制那点事

    ​     我们在 Redis持久化机制你学会了吗?学习了AOF和RDB,如果Redis宕机,他们分别通过回放日志和重新读入RDB文件的方式恢复数据,从而提高可靠性.我们今天来想这么一个问题,假如我们 ...

  9. 一次搞懂JavaScript对象

    索引 目录 索引 1. 对象与类 2.对象使用 2.1 语法 2.2 属性 3.对象特性 4.对象的创建 4.1 字面量 4.2 工厂函数 4.3 构造函数 4.4 class类 4.5 对象与单例模 ...

  10. POJ3662

    poj3662 大意:n个点p条边的无向图,求在删去k条边后使1和n号点联通路径上的最长边最小值. 一开始理解错题意以为是分层图求最短路径,结果写完发现k太大了发现事情没有那么简单(讨厌英语题面!) ...