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 使用方法简述的更多相关文章

  1. Python中的__new__()方法与实例化

    @Python中的__new__()方法与实例化   __new__()是在新式类中新出现的方法,它作用在构造方法建造实例之前,可以这么理解,在Python 中 存在于类里面的构造方法__init__ ...

  2. python中的replace()方法的使用

    python中的replace()方法的使用 需求是这样的:需要将字符串的某些字符替换成其他字符 str.replace(old,new,max) 第一个参数是要进行更换的旧字符,第二个参数是新的子串 ...

  3. Python中的字符串方法

    Python中的字符串方法 字符串类即str提供了许多有用的方法来操纵字符串.具体来说,我们将讨论如下的方法. 搜索字符串内的子字符串. 测试字符串. 格式字符串. 转换字符串. 回顾前面的章节,方法 ...

  4. python中的sort方法

    Python中的sort()方法用于数组排序,本文以实例形式对此加以详细说明: 一.基本形式 列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不 ...

  5. python中的sort方法使用详解

    Python中的sort()方法用于数组排序,本文以实例形式对此加以详细说明: 一.基本形式 列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不 ...

  6. Python中格式化format()方法详解

    Python中格式化format()方法详解 Python中格式化输出字符串使用format()函数, 字符串即类, 可以使用方法; Python是完全面向对象的语言, 任何东西都是对象; 字符串的参 ...

  7. 真正搞明白Python中Django和Flask框架的区别

    在谈Python中Django框架和Flask框架的区别之前,我们需要先探讨如下几个问题. 一.为什么要使用框架? 为了更好地阐述这个问题,我们把开发一个应用的过程进行类比,往往开发一个应用(web应 ...

  8. 关于python中的特殊方法

    研究了几个小时,大概对python中的特殊方法一知半解,现在写写自己的理解,以及记录一些找到的资源.待自己有比较深入理解的时候,再来更新 https://docs.python.org/3/refer ...

  9. Python中使用item()方法遍历字典的例子

    Python中使用item()方法遍历字典的例子 这篇文章主要介绍了Python中使用item()方法遍历字典的例子,for...in这种是Python中最常用的遍历字典的方法了,需要的朋友可以参考下 ...

随机推荐

  1. VC下防止反汇编的办法(1)

    最近在看IDA的书,讲汇编语言的部分提到了一种防止递归向下汇编器逆向程序的方法 这里esp指向栈顶,也就是调用方最后入栈的返回地址.然而实际在VC2017里用内联汇编这么做是不行的,原因可以看看VC生 ...

  2. 原创~vue router-link添加点击事件

    在学习vue中会遇到给router-link添加@click,@mouseover等事件 我想要做的是用v-for循环输出导航菜单,但是下面代码的@click事件和@mouseover并不会响应 &l ...

  3. 安装VMware Workstation提示the msi failed的解决办法

    有朋友安装VMware Workstation时出现报错,提示the msi failed等信息,原来他以前安装过绿色版.优化版的VM,但删掉后重装VM就会有这样的报错提示,如果你也遇到了相同的困扰, ...

  4. HDP2.0.6+hadoop2.2.0+eclipse(windows和linux下)调试环境搭建

    花了好几天,搭建好windows和linux下连接HDP集群的调试环境,在此记录一下 hadoop2.2.0的版本比hadoop0.x和hadoop1.x结构变化很大,没有eclipse-hadoop ...

  5. hadoop/storm以及hive/hbase/pig区别整理

    STORM与HADOOP的比较 对于一堆时刻在增长的数据,如果要统计,可以采取什么方法呢? 等数据增长到一定程度的时候,跑一个统计程序进行统计.适用于实时性要求不高的场景.如将数据导到HDFS,再运行 ...

  6. Android开发学习必备的java知识

    Android开发学习必备的java知识本讲内容:对象.标识符.关键字.变量.常量.字面值.基本数据类型.整数.浮点数.布尔型.字符型.赋值.注释 Java作为一门语言,必然有他的语法规则.学习编程语 ...

  7. 网络基础Cisco路由交换四

    NAT及静态转换 概述(NAT:网络地址转化) 作用: 通过将内部网络的私有ip地址翻译成全球唯一的公网ip地址, 使内部网络可以连接到互联网等外部网络上. NATA的特性 优点: 节省公有合法ip地 ...

  8. SQL Server 死锁的告警监控

    今天这篇文章总结一下如何监控SQL Server的死锁,其实以前写过MS SQL 监控错误日志的告警信息,这篇文章着重介绍如何监控数据库的死锁,当然这篇文章不分析死锁产生的原因.以及如何解决死锁.死锁 ...

  9. JavaScript获取屏幕和页面的宽度和高度

    JavaScript获取屏幕和页面的宽度和高度 1.设计源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN ...

  10. 个性化WinPE封装方法 ----最后实战“制作WinPE3.0图文教程”

    经过前几讲,主要目的就是准备一些"原材料",熟悉一些"命令",实际上是"战前演练准备".下面要进入"实战状态",成败在此 ...