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. 洛谷P2832 行路难 分析+题解代码【玄学最短路】

    洛谷P2832 行路难 分析+题解代码[玄学最短路] 题目背景: 小X来到了山区,领略山林之乐.在他乐以忘忧之时,他突然发现,开学迫在眉睫 题目描述: 山区有n座山.山之间有m条羊肠小道,每条连接两座 ...

  2. 基于Java SE集合的充值管理系统

    1.功能分析 ①管理员管理 注册.登录.退出 ②注册一卡通:记录相应信息. ③充值管理:对一卡通账户进行充值,查询,修改. 2.技术要求 ①Java 基础知识 + 集合类(模拟数据库). ②数据用对象 ...

  3. Ubuntu14.04+Nginx+MySql+PHP环境配置

    http://www.cnblogs.com/gophper/p/4793711.html

  4. PAT1001 A+B Format

    思路:每三位分割,注意符号,首位不要出现逗号. AC代码 #include <stdio.h> #include <algorithm> using namespace std ...

  5. hihoCoder 1051 : 补提交卡 枚举

    思路:预处理cnt(i)表示前i个数中有多少天需要补提交卡,枚举各个连续区间,区间[j, i]中需要补提交卡的天数是cnt(i) - cnt(j-1),判断m是否大于等于cnt(i) - cnt(j- ...

  6. lua 操作数据库

    操作mysql主要用到了lua-resty-mysql库,代码可以在github上找得到 而且上面也有实例代码 由于官网给出的例子比较基本,代码也比较多,所以我这里主要介绍一些怎么封装一下,简化我们调 ...

  7. c# 委托(Func、Action)

    以前自己写委托都用 delegate, 最近看组里的大佬们都用 Func , 以及 Action 来实现, 代码简洁了不少, 但是看得我晕晕乎乎. 花点时间研究一下,记录一下,以便后期的查阅. 1.F ...

  8. SecureCRT8.0设置语法高亮

    SecureCRT默认不显示语法高亮,整个界面颜色单一,用起来很不舒服,也没有效率,所有通过设置一下语法高亮还是很有必要的, 默认字体也看着不是很清晰.所以还是修改一下预告高亮比较好 设置语法高亮,多 ...

  9. 在Ubuntu16.04.4上安装jdk

    在Ubuntu16.04.4上安装jdk 一.安装步骤     1.下载jdk安装包     首先我们在oracle官网上下载jdk-8u161-linux-x64.tar.gz,当然也可以下载其他版 ...

  10. dojo实现省份地市级联报错(一)