python中Django 使用方法简述
Django是由Python写成的免费而且开源的Web应用框架--一堆零件的组成,可以帮助我们轻松的开发网站。这些零件都包括常用的:登录(注册,登入,登出),网站后台管理,表单,文件上传等。可以帮助我们避免重复造轮子。
下图是简单的Django框架图

整个project是由 python manage.py startproject xxxx 产生,app01是由 python manage.py startapp xxxx 生成,在pycharm中很方便的帮我们实现了以上的结构。
整个project的设置在setting中,包含了对template,static目录的设置,中间件的设置,运行environ的设置,app的注册。
url(uniform resource locate)中包含了整个project的所有可请求的地址,每个url都会对应view中的一个函数或者一个类。在url中由三种对应方式:
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/', views.index),#最常用的方式
url(r'^index/(?P\d+)$,views.index),#在地址中传了一个参数,index函数中需要另外一个参数来接收
url(r'^index/(?P<nid>\d+)$ ,views.index),#在地址中传了一个键值对,nid=d,在index函数中需要两个形参来接收
]
但是在工程应用中,urls都在项目的根目录下,如果是多个开发者协同,极有可能会导致url重复的风险,所以一般情况下是采用include方式,然后在每个app内部自行创建一个新的urls.py,这样可顺利解决此问题。
from django.conf.urls import include, url urlpatterns = [
# app01
url(r'^user/', include('app01.urls')),
]
model中包含了整个project的数据库信息,通过类创建,并且在terminal中输入 python manage.py makemigrations python manage.py mmigrate 进行创建,每一次的数据库操作都会在migrations中保存相应信息。
以下示例则建立了一个4列的数据库,如果不设定primary_key,那么则会自动新增一列自增且unique的id列
#数据库的创建
class USER(models.Model):
uid = models.AutoField(primary_key=True)#AutoField表示自增列,默认为Interger,还有一个是BigAutoField,这个是最大限值为9223372036854775807,基本上使用Auto Field即可
user = models.CharField(max_length=32,null=True)
password = models.CharField(max_length=32,null=True)
email = models.EmailField(null=True)#
重点是view中的后端的处理,它可以是连接数据库(model)与前端(template)的平台。通过render()对网页进行渲染,从而返回给用户相对应的页面。在返回时一共有三种方式:HttpResponse,render,redirect
数据库的增删改查
#增
models.USER.object.creat({'uid':1,'user':'jiang','password':'','email':'jiang@123.com'})
#删
model.USER.object.filter().delete
#改
model.USER.object.filter().update
#查
model.USER.object.filter().first()
model.USER.object.all()
model.USER.object.all().value('user','password')#只获取user和password的数据
static则是包含了所有的静态文件,包括需要在前端进行处理的CSS,JS文件都可保存在这里,然后在html中进行import即可。
db.sqlite3是Django默认的数据库类型,可以使用Navicat Premium打开,网上很多破解教程,这里便不赘述。当然也可以采用MySQL,只需要在setting中设置,
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test', ## 数据库名称
'USER': 'root',
'PASSWORD': 'password', ## 安装 mysql 数据库时,输入的 root 用户的密码
'HOST': '127.0.0.1',
}
}
template 模板的用法:
1 变量(Var):在使用时用双括号括起来,从views中需要 render(request,'name.html',{'first_name‘:first_name,'last_name':last_name) 就能在模板中使用
My first name is {{ first_name }}. My last name is {{ last_name }}
2 标签(Tag):用于模板中逻辑语言的实现,使用{% %}实现,比如经常会使用到的{% csrf_token %},以及for循环标签:
{% if user.is_authenticated %}
Hello, {{ user.username }}.
{% endif %}
3 过滤器(Filter):用于辅助性工作,获取长度(length),格式化事件(date)
{{ string|length }}
{{ datetime|date:"Y-m-d h:i:s" }} {# 对应格式是 年-月-日 时:分:秒 #}
以上便是对Django基本用法的总结,还会持续更新。
python中Django 使用方法简述的更多相关文章
- Python中的__new__()方法与实例化
@Python中的__new__()方法与实例化 __new__()是在新式类中新出现的方法,它作用在构造方法建造实例之前,可以这么理解,在Python 中 存在于类里面的构造方法__init__ ...
- python中的replace()方法的使用
python中的replace()方法的使用 需求是这样的:需要将字符串的某些字符替换成其他字符 str.replace(old,new,max) 第一个参数是要进行更换的旧字符,第二个参数是新的子串 ...
- Python中的字符串方法
Python中的字符串方法 字符串类即str提供了许多有用的方法来操纵字符串.具体来说,我们将讨论如下的方法. 搜索字符串内的子字符串. 测试字符串. 格式字符串. 转换字符串. 回顾前面的章节,方法 ...
- python中的sort方法
Python中的sort()方法用于数组排序,本文以实例形式对此加以详细说明: 一.基本形式 列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不 ...
- python中的sort方法使用详解
Python中的sort()方法用于数组排序,本文以实例形式对此加以详细说明: 一.基本形式 列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不 ...
- Python中格式化format()方法详解
Python中格式化format()方法详解 Python中格式化输出字符串使用format()函数, 字符串即类, 可以使用方法; Python是完全面向对象的语言, 任何东西都是对象; 字符串的参 ...
- 真正搞明白Python中Django和Flask框架的区别
在谈Python中Django框架和Flask框架的区别之前,我们需要先探讨如下几个问题. 一.为什么要使用框架? 为了更好地阐述这个问题,我们把开发一个应用的过程进行类比,往往开发一个应用(web应 ...
- 关于python中的特殊方法
研究了几个小时,大概对python中的特殊方法一知半解,现在写写自己的理解,以及记录一些找到的资源.待自己有比较深入理解的时候,再来更新 https://docs.python.org/3/refer ...
- Python中使用item()方法遍历字典的例子
Python中使用item()方法遍历字典的例子 这篇文章主要介绍了Python中使用item()方法遍历字典的例子,for...in这种是Python中最常用的遍历字典的方法了,需要的朋友可以参考下 ...
随机推荐
- 洛谷 P1486 [NOI2004]郁闷的出纳员【Treap】题解+AC代码
题目描述 OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资 ...
- 洛谷P3369 【模板】普通平衡树(Treap/SBT)
洛谷P3369 [模板]普通平衡树(Treap/SBT) 平衡树,一种其妙的数据结构 题目传送门 题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入x数 删除 ...
- MSSql Server 批量插入数据优化
针对批量入库, .Net Framework 提供了一个批量入库Class : SqlBulkCopy , 批量入库性能不错,经测试 四万左右数据 2秒入库. 以下是测试Demo , 使用外部传入事 ...
- Spring-Security 自定义Filter完成验证码校验
Spring-Security的功能主要是由一堆Filter构成过滤器链来实现,每个Filter都会完成自己的一部分工作.我今天要做的是对UsernamePasswordAuthenticationF ...
- Nginx拦截算法
Nginx流量拦截算法 nginx 夏日小草 2015年10月22日发布 | 1 收藏 | 40 4.2k 次浏览 0x00.About 电商平台营销时候,经常会碰到的大流量问题,除了做流量分 ...
- PHP不使用任何内置函数实现字符串翻转
实现字符串翻转PHP本身自带一个函数就可以解决,strrev函数.这里不适用任何内置函数实现字符串翻转 案例一(纯字母): $str = 'abcdefghig k'; //假设测试的字符串/g与k之 ...
- java url demo
// File Name : URLDemo.java import java.net.*; import java.io.*; public class URLDemo { public stati ...
- BUNOJ 1011
字符串处理的题.原题链接 AC代码: #include<cstring> #include<cstdio> #include<string> #include< ...
- uva140
全排列回溯剪枝. 题目数据很水.记录当前最小带宽,边回溯边计算当前序列最大的距离(也就是带宽),如果当前带宽超过了当前的最小带宽就剪枝. 注意下,数据读入时的字符串处理. AC代码 #include& ...
- mybatis与spring的整合(使用接口实现crud)
本人刚刚接触mybatis,今天把它和spring整合起来用了一个上午==. 一开始是通过配置文件来配置,后来尝试用了一下注解,觉得mybatis的注解真的有点恶心...一大坨的,所以我还是建议使用配 ...