0%

教程1 Django初学实践,创建简易blog

Django框架,以MVT(mvc+T)模式高效开发web,超越spring系列的存在

1.前期工作

以下命令在命令行下完成

  • 创建项目

该命令生成manage.py文件和4个基本配置文件,如果项目已有相关文件,就无需再使用该命令

1
django-admin.py startproject mysite

生成文件如下:

mysite -
  • | init.py

  • | settings.py

  • | urls.py

  • | wsgi.py
    manage.py|-

  • 运行服务器

1
2
python manage.py runserver
#可更改端口:python manage.py runserver 8003
  • 创建应用(app)
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')
  • views(views.py)

该层用于定义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>')
  • controller(urls.py)
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',
)
  • 在setting.py中配置数据库连接

2.2 model相关(写完model之后)

  • 记录model变动

完成后会生成model中对应类的文件

1
python manage.py makemigrations
  • 同步数据库
1
python manage.py migrate
  • 创建超级管理员
1
python manage.py  createsuperuser
  • 在admin.py中注册model模型中的类
1
2
from blog.models import BlogPost
admin.site.register(BlogPost)