Django框架,以MVT(mvc+T)模式高效开发web,超越spring系列的存在
1.前期工作
以下命令在命令行下完成
该命令生成manage.py文件和4个基本配置文件,如果项目已有相关文件,就无需再使用该命令
1
| django-admin.py startproject mysite
|
生成文件如下:
| init.py
| settings.py
| urls.py
| wsgi.py
manage.py|-
运行服务器
1 2
| python manage.py runserver #可更改端口:python manage.py runserver 8003
|
1
| python manage.py startapp blog
|
2.mvc设计
- models(models.py)
用于定义数据结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #from __future__ import unicode_literals #该命令负责转码,非必须使用
from django.contrib import admin from django.db import models
class BlogPost(models.Model): title = models.CharField(max_length =150) body = models.TextField() timestamp = models.DateTimeField() # BlogPost类是django.db.models.Model的一个子类 。 #它有变量title(blog的标题),body(blog的内容部分), #timestamp(blog的发表时间)。
class BlogPostAdmin(admin.ModelAdmin): list_display = ('title','timestamp')
|
该层用于定义request和response,就是用户请求后获得什么样的页面
1 2 3 4 5 6 7 8 9
| from blog.models import BlogPost from django.shortcuts import render_to_response
def myBlogs(request): blog_list = BlogPost.objects.all() return render_to_response('BlogTemplate.html',{'blog_list':blog_list})
def Hello(request): return HttpResponse('<h1>hello disanda<h1>')
|
1 2 3 4 5 6 7 8 9
| from django.conf.urls import url from django.contrib import admin from blog.views import *
urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^myBlogs/$',myBlogs), url('',Hello) ]
|
3.templates模版网站(MTV模式)
在根项目文件下创建templates文件夹(用于存放前端网页),并在根配置文件(settings.py)配置templates路径。
‘DIRS’: [os.path.join(BASE_DIR,’templates’)],
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| TEMPLATES = [ {
'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR,'templates')], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
|
基模版页
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| #名为base.html
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>标题</title> </head> <style type="text/css"> body{ color: #efd; background: #BBBBBB; padding: 12px 5em; margin:7px; } h1{ padding: 2em; background: #675; } h2{ color: #85F2F2; border-top: 1px dotted #fff; margin-top:2em; } p{ margin:1em 0; } </style> <body> <h1>XX博文</h1> <h3>小生不才,但求简约!</h3> {% block content %} {% endblock %} </body> </html>
|
具体网页(和views.py中的网页对应)
1 2 3 4 5 6 7 8 9 10
| #名为BlogTemplate.html
{% extends "base.html" %} {% block content %} {% for post in blog_list %} <h2>{{ post.title }}</h2> <p>{{ post.timestamp }}</p> <p>{{ post.body }}</p> {% endfor %} {% endblock %}
|
4.配置工作
2.1前期配置
- 在setting.py的INSTALLED_APP列表中配置app
1 2 3 4 5 6 7 8 9
| INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'blog', )
|
2.2 model相关(写完model之后)
完成后会生成model中对应类的文件
1
| python manage.py makemigrations
|
1
| python manage.py migrate
|
1
| python manage.py createsuperuser
|
1 2
| from blog.models import BlogPost admin.site.register(BlogPost)
|