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 Ioc和依赖注入

    总结一下近来几天的学习,做个笔记 以下是Spring IoC相关内容: IoC(Inversion of Control):控制反转: 其主要功能可简单概述为:将 用 new 去创建实例对象,转换为让 ...

  2. hdu 2093 成绩排名

    思路: 没啥思路,就是定义结构体,跟题目,走,当时没想到对那个括号的处理,后面看了题解,才知道用个getchar直接判断 算是一个值得思考的点. 代码: #include<bits/stdc++ ...

  3. WIN10家庭版 访问WINXP 共享打印机

    WIN10家庭版 1.安装对应的打印机驱动 2.打开WIN10计算机---在地址栏中输入:\\计算机XP名称,显示对应的共享资源,直接选择即可.如果无法访问则进行如下第三步 3.设置过程 开始 -设置 ...

  4. 答读者问(1):非模式物种找marker;如何根据marker定义细胞类型

    下午花了两个小时回答读者的疑问,觉得可以记录下来,也许能帮到一部分人. 第一位读者做的是非模式物种的单细胞. 一开始以为是想问我非模式物种的marker基因在哪儿找,读者朋友也提到了blast 研究的 ...

  5. 程序员们,还在挣扎着上不了github吗

    前言 无兄弟,不篮球:无github,不代码.github和stackoverflow是程序员们的最爱,哪怕是github总是在抽疯,虐了程序员们千百遍,但他们还是想各种办法艰难地在github分享他 ...

  6. 一行代码让matplotlib图表变高大上

    1 简介 matplotlib作为Python生态中最流行的数据可视化框架,虽然功能非常强大,但默认样式比较简陋,想要制作具有简洁商务风格的图表往往需要编写众多的代码来调整各种参数. 而今天要为大家介 ...

  7. PAT乙级:1015 德才论 (25分)

    1015 德才论 (25分) 宋代史学家司马光在<资治通鉴>中有一段著名的"德才论":"是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人 ...

  8. Innodb 锁的介绍

    如下博文是参考如下博文内容,再加整理. http://blog.chinaunix.net/uid-24111901-id-2627857.html http://blog.csdn.net/wang ...

  9. Python自动化测试面试题-接口篇

    目录 Python自动化测试面试题-经验篇 Python自动化测试面试题-用例设计篇 Python自动化测试面试题-Linux篇 Python自动化测试面试题-MySQL篇 Python自动化测试面试 ...

  10. 第二十九篇 -- UDP和TCP

    最近在写WIFI模块,所以就想明确一些TCP和UDP的区别,发现以前的理解还是有点误区.现在重新学习. 相同点 UDP协议和TCP协议都是传输层协议 TCP(Transmission Control ...