首页 > 技术文章 > python中Django 使用方法简述

BigJ 2017-09-19 12:54 原文

  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':'123','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基本用法的总结,还会持续更新。

      

    

 

推荐阅读