django入门教程(二)简单的博客系统

来源:互联网 发布:卖店铺淘宝客软件 编辑:程序博客网 时间:2024/05/01 10:53

之前写了django的入门教程,最近有开始要写django了,所以就接着之前的更新了,这篇博客的内容是利用django构建一个简单的博客系统。

django 1.8.3 python 2.7.9

第一步创建工程:

django-admin.py startproject mysite

创建app blog

manage.py startapp blog

创建超级用户

manage.py createsuperuser django123

迁移

manage.py makemigrationsmanage.py migrate

准备工作已经完成了。现在开始处理细节部分
配置mysite文件夹下的settings.py

# -*- coding:utf-8 -*-"""Django settings for mysite project.Generated by 'django-admin startproject' using Django 1.8.3.For more information on this file, seehttps://docs.djangoproject.com/en/1.8/topics/settings/For the full list of settings and their values, seehttps://docs.djangoproject.com/en/1.8/ref/settings/"""# Build paths inside the project like this: os.path.join(BASE_DIR, ...)import osBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))# Quick-start development settings - unsuitable for production# See https://docs.djangoproject.com/en/1.8/howto/deployment/checklist/# SECURITY WARNING: keep the secret key used in production secret!SECRET_KEY = 'pek#c0ur%jtm)&8c6mbn99n#jigvbm=h0%eg#^(-bdmezvp%)q'# SECURITY WARNING: don't run with debug turned on in production!DEBUG = TrueALLOWED_HOSTS = []# Application definitionINSTALLED_APPS = (    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',    'blog')MIDDLEWARE_CLASSES = (    'django.contrib.sessions.middleware.SessionMiddleware',    'django.middleware.common.CommonMiddleware',    'django.middleware.csrf.CsrfViewMiddleware',    'django.contrib.auth.middleware.AuthenticationMiddleware',    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',    'django.contrib.messages.middleware.MessageMiddleware',    'django.middleware.clickjacking.XFrameOptionsMiddleware',    'django.middleware.security.SecurityMiddleware',)ROOT_URLCONF = 'mysite.urls'TEMPLATES = [    {        'BACKEND': 'django.template.backends.django.DjangoTemplates',        'DIRS': [os.path.join(BASE_DIR,'templates').replace('\\','/'),],        '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',            ],        },    },]WSGI_APPLICATION = 'mysite.wsgi.application'# Database# https://docs.djangoproject.com/en/1.8/ref/settings/#databasesDATABASES = {    'default': {        'ENGINE': 'django.db.backends.sqlite3',        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),    }}# Internationalization# https://docs.djangoproject.com/en/1.8/topics/i18n/LANGUAGE_CODE = 'zh_CN'TIME_ZONE = 'PRC'USE_I18N = TrueUSE_L10N = TrueUSE_TZ = True# Static files (CSS, JavaScript, Images)# https://docs.djangoproject.com/en/1.8/howto/static-files/STATIC_URL = '/static/'STATICFILES_DIRS = (    os.path.join(BASE_DIR,'static').replace('\\','/'),)

主要配置的几个地方就是,INSTALLED_APPS中添加你的app,这里添加‘blog’,TEMPLATES中得到DIRS增加你的模板文件夹templates的路径,DATABASES暂时用不到mysql,所以不用改变,然后就是时区的问题了,LANGUAGE_CODE = ‘zh_CN’,TIME_ZONE = ‘PRC’把语言更改成中文。
开启django自带的服务器

manage.py runserver

在浏览器中访问127.0.0.1:8000/admin,结果页面如下
这里写图片描述
可以看到页面已经是中文了。
利用之前创建的超级用户账户和密码,登录
这里写图片描述
登录进去后的页面
这里写图片描述
配置到这里就已经完成了,现在开始构建简易博客系统的细节。在这里首先谈一下django的MVC设计模式,M表示model,也就是数据模型,django自动为我们隔绝了数据库的底层操作,直接在models.py文件中用函数表示一个二维表;V表示views,其实就是网站的逻辑层,views.py中的函数输入参数为访问请求request,输入渲染后的html文件,然后由服务器返回给客户端浏览器;C,就是根据浏览器的url地址访问“模型”获取数据,并调用“视图”显示这些数据,暂时不用管它。
先来看一下我们的目的,我们是要构建一个简易博客系统,那么首先我们是要往这个博客系统上面发表内容,一个内容简单来说可以包含时间、主体、标题,这些其实就是数据,那么根据刚才所说的M,其实就是要构建一个二维表,这个表有时间、主体、标题这三个字段。下面是models.py中的blogPost函数表示的二维表代码:

# -*- coding:utf-8 -*-from django.db import models# Create your models here.class blogPost(models.Model):    title = models.CharField(max_length=150,verbose_name=u'标题')    body = models.TextField(verbose_name=u'正文')    timestamp = models.DateField(verbose_name=u'发表时间')    class Meta:        verbose_name_plural = u'博客'

已经构建好数据模型了,那么现在要构建这个博客系统的逻辑层了。我们想要的效果是,当我们访问博客主页的时候,我们在主页上显示一个博客列表。我么先来设计博客主页的url:127.0.0.1:8000/blog就可以了,然后我们设计views中的函数blog_home来对这个url访问请求作出反应。
设计url:
先在mysite中的urls.py中添加app博客的系列url

urlpatterns = [    url(r'^admin/', include(admin.site.urls)),    url(r'^blog/',include('blog.urls')),]

然后blog中的urls.py:

# -*- coding:utf-8 -*-from django.conf.urls import url,includefrom views import blog_homeurlpatterns = [    url(r'^$',view=blog_home,name='home'),]

views.py

from django.shortcuts import render,render_to_responsefrom models import blogPost# Create your views here.def blog_home(request):    c = {}    blog_list = blogPost.objects.all()    c['posts'] = blog_list    return render_to_response('blog/home.html',c)

最后就是模板的实现了,模板如下:

<html><head lang="zh_CN">    <!--//引用css文件-->    <link href="/static/blog/css/home.css" media="screen" rel="stylesheet" type="text/css" /></head><body>    <h1 id="head">我的第一个django简易博客系统</h1>    {% for post in posts %}    <div class="blog">        <h2 >{{post.title}}</h2>        <p>{{post.timestamp}}</p>        <p>{{post.body}}</p>    </div>    {% endfor %}</body></html>

这里使用了简单的css布局。最后效果如下:
这里写图片描述

0 0
原创粉丝点击