目录

1 使用工具

2 安装Django

3 创建项目

4 运行开发服务器

5 创建应用,一个简单的博客

5.1 创建应用的模型

5.2 设置数据库

5.3 创建数据库表,进行数据迁移

5.4 管理界面本地化

5.5 创建超级用户

5.6 使用admin

5.7 自定义修改admin显示页面

6 设置博客的用户界面

6.1 创建模板

6.2 创建url模式

6.3创建视图函数

6.4 设置页面查询方式


1 使用工具

Pycharm,Windows平台

2 安装Django

打开Pycharm底部的Terminal,输入命令:

 pip install django

如图所示:

3 创建项目

需要用到Django的工具:django-admin.py,它在Windows系统中通常安装在Scripts文件夹下,此文件夹在python安装目录下,需要将此路径添加到PATH变量,才能确保django-admin.py能够在命令行执行。添加方式:打开控制面板–系统–高级系统设置–高级–环境变量,编辑PATH项,添加路径,如下图,我的为D:\pythonanzhuang\Scripts.

完成后便可在命令行进行下一步:

django-admin startproject mypro

完成后可以看到所创建的文件夹目录如下:

继续进入mypro:

manage.py:应用的命令行接口,项目运行入口

_init_.py:告诉python这是一个软件包

asgi.py:为了支持异步网络服务器和应用而新出现的 Python 标准

settings.py项目相关的各种配置

urls.py:全局URL配置文件

wsgi.py:web服务器和python程序之间的通信标准

4 运行开发服务器

命令行输入:

python manage.py runserver

在浏览器窗口打开链接:http://127.0.0.1:8000/

Pycharm命令行终端出现:

从左到右依次表示:时间戳、请求、HTTP响应编码、字节数。

这些表示目前服务器运行正常,可以创建应用啦。

5 创建应用,一个简单的博客

还需要用到manage.py工具,在Pycharm的Terminal继续输入命令:

python manage.py startapp myblog

所创建的文件目录如下:

_init_.py:告诉python这是一个软件包

models.py:数据模型

views.py:视图函数

tests.py:单元测试

添加应用:

需要把此应用添加到之前所创建的项目中,它才能正常使用。打开项目mypro中的settings.py文件,找到INSTALLED_APPS这个元组,在末尾添加新的应用名称:

还是这个文件,再找到 TEMPLATES项,添加DIRS:

5.1 创建应用的模型

进入myblog目录,打开models.py文件,添加模型类:

from django.db import models# Create your models here.class BlogPost(models.Model):title = models.CharField(max_length=150) #博客的标题body = models.TextField()#博客正文timestamp = models.DateTimeField() #博客创建时间

5.2 设置数据库

如果使用默认的SQlite:

打开mypro目录下的settings.py文件,找到DATABASES元组,如下图所示,默认使用SQlite。

如果使用MySQL数据库:

更改mypro目录下的settings.py文件,找到DATABASES元组,改为:

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', #改为MySQL数据库'NAME': 'mydb', #数据库名称'USER': 'root', #数据库用户名'PASSWORD': '123abc', #数据库用户密码'HOST': '127.0.0.1',#主机地址'PORT': '3306', #端口号}}

在Django中使用MySQL数据库之前,要先确保已经建立了数据库mydb,并且上图使用的用户名和密码是已经存在的。还需在项目mypro中的_init_.py文件做修改,先下载模块pymysql,命令为:

pip install pymysql

5.3 创建数据库表,进行数据迁移

首先创建数据库表,命令如下:

 python manage.py makemigrations

然后执行迁移,命令如下:

python manage.py migrate

注意:有些旧版使用的命令为:./manage.py syncdb,在新版已不能使用。

注意:每次在项目中增加新的应用,即在INSTALLED_APPS这个元组添加新的应用后,都需要进行数据迁移,即重复步骤7。

5.4 管理界面本地化

此处改为中国化(亚洲/上海时区)

打开mypro项目下的settings.py文件,找到如下设置:

修改以下两项:

LANGUAGE_CODE = 'zh-Hans'TIME_ZONE = 'Asia/Shanghai'

5.5 创建超级用户

在Terminal命令行输入:

python manage.py createsuperuser

按照提示一步步输入即可,密码过于简单的会进行提示。

5.6 使用admin

admin为自动后台管理,再次打开settings.py文件,找到INSTALLED_APPS这个元组,观察其第一行的‘django.contirb.admin’是否被注释(旧版好像会被注释,需要自己去掉注释,新版不会)。

确认admin设置正确后,需要添加在admin页面显示的模型,即注册BlogPost。打开myblog下的admin,py文件,

添加以下代码,这样admin就可以管理已经注册的对象:

from django.contrib import admin#导入adminfrom myblog import models #导入数据模型admin.site.register(models.BlogPost)#使用admin注册BlogPost类

然后启动服务器:

python manage.py runserver

打开浏览器,输入链接:http://127.0.0.1:8000/admin

注意:此时链接地址稍有改变,需要进入admin。

使用之前创建的超级用户进行登录,登陆成功后界面如下:

注意,如果你的blog界面此时没有添加的类,可能的问题为:1.没有在settings.py的INSTALLED_APPS中添加应用。2.应用的models.py中有错误 。3.没有在admin.py中进行模型注册。

单击MYBLOG进入Blogpost模型管理界面:

点击增加按钮,进入页面如下,可以自由编辑。

点击保存,出现以下页面:

5.7 自定义修改admin显示页面

修改myblog/admin.py文件,建立管理类BlogPostAdmin,并进行注册:

from django.contrib import admin# Register your models here.from django.contrib import admin#导入adminfrom myblog import models #导入数据模型class BlogPostAdmin(admin.ModelAdmin):list_display = ('pk','title','body','timestamp') #设置要显示的属性,pk为索引。admin.site.register(models.BlogPost, BlogPostAdmin)#使用admin注册BlogPostAdmin类

刷新浏览器界面,显示如下:

6 设置博客的用户界面

之前的设置是用于开发者,现在需要设置面向用户的页面。Django中,web页面的经典组件有:

模板(templates):显示python类字典对象传入的信息

视图函数(view):从数据库获取信息,并显示结果

URL模式:将收到的请求映射到视图,也可以向视图传递参数

Django运行顺序:

1.先查找匹配的URL模式

2.调用对应的视图函数

3.将数据通过模板展现给用户

此次采用的构建顺序稍有不同:

1.先创建模板,以便有内容可以进行观察。

2.设计URL模式,这样Django可以立即访问

3.设计视图原型,在此基础上进一步开发。

6.1 创建模板

Django会在每个应用的子目录中搜索templates目录。

因此在应用myblog的目录下新建templates文件夹,并在templates文件夹中新建模板文件archive.html。如下图所示:

然后在archive.html文件中编写代码:

Title{% for post in posts %}

{{ post.title }}

{{ post.timestamp }}

{{ post.body }}


{% endfor %}

6.2 创建url模式

url设置包括两处,一个用于项目,一个用于应用。

项目中(mypro/urls.py)的url设置如下:

from django.contrib import admin #导入对象from django.urls import pathfrom django.urls import re_path as url,include#新版使用 re_pathurlpatterns = [url(r'^myblog/', include('myblog.urls')),#引号表示传递字符串,匹配应用中的urlpath(r'^admin/', admin.site.urls),#不用引号,表示传递对象,要确保已经导入该对象。]

应用中(mypro/myblog/urls.py)的url设置如下:

新建文件mypro/myblog/urls.py,添加代码:

#from django.conf.urls.defaults import *#改写法已被新版弃用,用下边的写法来代替from django.urls import re_path as urlfrom . import viewsurlpatterns = patterns(url(r'archive$',views.archive))

6.3创建视图函数

打开mypro/myblog/views.py

添加以下代码:

from django.shortcuts import renderfrom myblog.models import BlogPost# Create your views here.def archive(request):posts = BlogPost.objects.all()return render(request,'archive.html',{'posts':post})

再次启动服务器:

python manage.py runserver

返回以下信息:

浏览器访问http://127.0.0.1:8000/myblog/archive

6.4 设置页面查询方式

1.对myblog/views.py进行修改

按照时间逆序排列:

设置页面显示的博客最多为5篇:

2.对模型的默认排序方式进行修改,myblog/models.py修改如下:

from django.db import models# Create your models here.class BlogPost(models.Model):title = models.CharField(max_length=150) #博客的标题body = models.TextField()#博客正文timestamp = models.DateTimeField() #博客创建时间class Meta:odering = ('-timestamp',)

如果本文对您有帮助,欢迎关注收藏,谢谢!

下一章节将介绍如何处理用户的输入。