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/(?Pd+)$,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基本用法的总结,还会持续更新。