天天看点

python web项目_Django快速搭建论坛项目 | Python之Web篇

1 什么是Django

Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M(Model),视图V(View)和模版T(Template)。

使用这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。

在Django框架中,还包含许多功能强大的第三方插件,使得Django具有较强的可扩展性。

Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以“插件”形式服务于整个框架。

本文操作环境:

Python 3.7.1  (官网下载https://www.python.org/downloads/)

Django 3.0.2

(pip install django官网pip下载https://pypi.org/project/pip/#files)

2 选择创建项目路径

2.1、创建mysite项目名和blog应用

选择项目路径有两种情况:

1.打开cmd,cd+路径。(打开cmd默认是C盘的,一般情况创建项目都不在C盘,例如在D:/test。那么首先要切换到D盘,终端先输入D:回车,再cd test回车)。

C:\Users\admin>D:D:\>cd testD:\test>
           

2.同样是D:/test作为项目目录,打开D盘下的test文件夹,鼠标右键空白处在弹出的选项中点击 在此处打开命令窗口 (这样就直接在cmd打开test路径了)。

D:\test>
           

3 创建项目

注意是在D盘test目录下输入命令,test作为项目目录。

# 创建mysite项目D:\test>django-admin startproject mysite# 切换到mysite目录D:\test>cd mysite# 创建blog应用D:\test\mysite>python manage.py startapp blog
           

3.1、项目目录结构为:

python web项目_Django快速搭建论坛项目 | Python之Web篇

3.2、项目目录介绍:

     manage.py:Django项目里面的工具,通过它可以调用django shell和数据库等。     mysite/     ---  settings.py:包含了项目的默认设置,数据库信息,调试标志 ,还有其他设置,比如静态文件、媒体文件的根目录等。     ---  urls.py :负责把URL 配置 模式映射到应用程序。     --- wsgi.py:用于项目部署。     blog /     --- admin.py:django 自带admin后面管理,将models.py 中表映射到后台。     --- apps.py:blog 应用的相关配置。     --- models.py:Django 自带的ORM ( 对象关系映射 ) ,用于设计数据库表。     --- tests.py:用于编写Django单元测试。     --- veiws.py :视图文件,用于编写功能的主要处理逻辑。

3.3、setting.py配置文件,添加blog应用:

# Application definitionINSTALLED_APPS = [    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',    #新增的blog应用  由python manage.py startapp blog 生成的blog应用    'blog',]
           

4 初始化admin后台数据库

4.1、Python 自带SQLite3数据库,Django默认使用SQLite3数据库,如果使用其它数据库请在settings.py文件中设置

# Database# https://docs.djangoproject.com/en/3.0/ref/settings/#databasesDATABASES = {    'default': {        'ENGINE': 'django.db.backends.sqlite3',        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),    }}
           
# Django使用mysql数据库设置DATABASES = {     'default': {         'ENGINE': 'django.db.backends.mysql',         'NAME': 'blog',         'USER':'root',         'PASSWORD':'123456',         'HOST':'127.0.0.1',         'PORT':'3306',   }}
           

4.2、Django默认帮我们做了很多事情,比如User、Session 这些都需要创建表来存储数据,Django已经把这些模块帮我们准备好了,我们只需要执行数据库同步,把相关表生成出来即可:

D:\test\mysite>python manage.py migrateOperations to perform:  Apply all migrations: admin, auth, contenttypes, sessionsRunning migrations:  Applying contenttypes.0001_initial... OK  Applying auth.0001_initial... OK  Applying admin.0001_initial... OK  Applying admin.0002_logentry_remove_auto_add... OK  Applying admin.0003_logentry_add_action_flag_choices... OK  Applying contenttypes.0002_remove_content_type_name... OK  Applying auth.0002_alter_permission_name_max_length... OK  Applying auth.0003_alter_user_email_max_length... OK  Applying auth.0004_alter_user_username_opts... OK  Applying auth.0005_alter_user_last_login_null... OK  Applying auth.0006_require_contenttypes_0002... OK  Applying auth.0007_alter_validators_add_error_messages... OK  Applying auth.0008_alter_user_username_max_length... OK  Applying auth.0009_alter_user_last_name_max_length... OK  Applying auth.0010_alter_group_name_max_length... OK  Applying auth.0011_update_proxy_permissions... OK  Applying sessions.0001_initial... OK
           

4.3、创建超级管理员帐号,登录admin后台,必须要有帐号

D:\test\mysite>python manage.py createsuperuserUsername (leave blank to use 'admin'): admin  # 管理员帐号Email address: [email protected]  # email,任意输入一个就行Password:            # 密码,输入的时候不显示出来,其实输入了Password (again):    # 重复密码#下面这段提示意思是,因为我输入的密码是admin,过于简单,测试阶段可以用简单密码,实战就需要复杂点,按要求设置,最少8个字符The password is too similar to the username.    This password is too short. It must contain at least 8 characters.This password is too common.#询问你是否跳过密码验证,输入y回车即可Bypass password validation and create user anyway? [y/N]: ySuperuser created successfully.
           

5 启动项目,访问admin后台

D:\test\mysite>python manage.py runserverWatching for file changes with StatReloaderPerforming system checks...System check identified no issues (0 silenced).January 08, 2020 - 09:58:29Django version 3.0.2, using settings 'mysite.settings'Starting development server at http://127.0.0.1:8000/Quit the server with CTRL-BREAK.
           

5.1、浏览器访问:http://127.0.0.1:8000

默认是英文版本,设置中文后台与时区:

setting.py文件下设置。

LANGUAGE_CODE = 'zh-hans'TIME_ZONE = 'Asia/Shanghai'
           
python web项目_Django快速搭建论坛项目 | Python之Web篇

5.2、访问Admin后台:http://127.0.0.0:8000/admin,通过前面创建的超级管理员账号登录

python web项目_Django快速搭建论坛项目 | Python之Web篇

5.3、登录之后进入到后台主页面

python web项目_Django快速搭建论坛项目 | Python之Web篇

到此,准备工作结束。

6 设计Model(设计数据库表)

6.1、设计blog表

打开blog目录下的models.py文件,该类下的属性对应数据库字段。

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

6.2、再次执行数据库同步,因为刚新增了数据模型表

会提示生成了0001_initial.py文件,该文件在blog应用下的_py_cache_文件下。

D:\test\mysite>python manage.py makemigrations blogMigrations for 'blog':  blog\migrations\0001_initial.py    - Create model BlogsPost
           

6.3、把刚生成的0001_initial.py文件更新到数据库

D:\test\mysite>python manage.py migrateOperations to perform:Apply all migrations: admin, auth, blog, contenttypes, sessionsRunning migrations:Applying blog.0001_initial... OK
           

6.4、通过Admin管理

通过Admin后台来管理blog表数据。打开blog应用下的admin.py 文件。

from django.contrib import adminfrom blog.models import BlogsPost# Register your models here.class BlogsPostAdmin(admin.ModelAdmin):    list_display = ['title', 'body', 'timestamp']admin.site.register(BlogsPost, BlogsPostAdmin)
           

6.5、登录Admin后台添加blog 

再次启动项目(python manage.py runserver),访问:http://127.0.0.1:8000/admin。

Django后台主页面上会多出Blog应用。

点击Add添加数据。

python web项目_Django快速搭建论坛项目 | Python之Web篇

Time后面获取当前时间默认是不对的,相差了8小时。

python web项目_Django快速搭建论坛项目 | Python之Web篇

在你的Django项目中setting.py找到TIME_ZONE配置,可以看到默认的是"UTC",这时需要把他更改为我们所在的时区,进行如下设置:

TIME_ZONE = 'Asia/Shangha
           

就ok了

6.6、点击SAVE 按钮保存,博客编写完成。

python web项目_Django快速搭建论坛项目 | Python之Web篇

到此,数据部分已经搞定。

7 创建视图

7.1、创建视图函数

打开blog应用下的views.py文件:

from django.shortcuts import renderfrom blog.models import BlogsPost# Create your views here.def blog_index(request):    blog_list = BlogsPost.objects.all()  # 获取所有数据    return render(request,'index.html', {'blog_list':blog_list})   # 返回index.html页面
           

7.2、创建视图对应的模版

在blog应用下创建templates目录(blog/templates/),在目录下创建首页文件index.html,内容:(blog_list为视图view.py定义的变量)。

{% for blog in blog_list %}    <h2>{{ blog.title }}h2>    <p>{{ blog.timestamp }}p>    <p>{{ blog.body }}p>{% endfor %}
           

循环视图view.py文件渲染到页面的blog_list集合,显示标题,创建时间和正文。

blog_list = BlogPost.objects.all(),获取数据库里面表中所有的BlogPost对象。

render返回一个页面(index.html),顺带把数据库中查询出来的所有博客内容(blog_list)也一并返回。

7.3、创建blog应用的url模式

在mysite/urls.py文件里添加blog的url:

from django.contrib import adminfrom django.urls import pathfrom blog import viewsurlpatterns = [    path('admin/', admin.site.urls),    path('blog/', views.blog_index),]
           

7.4、 再次终端cmd启动服务 cmd命令python manage.py runserver,访问(http://127.0.0.1:8000/blog/)。

python web项目_Django快速搭建论坛项目 | Python之Web篇

到此,项目开发完成

python web项目_Django快速搭建论坛项目 | Python之Web篇
python web项目_Django快速搭建论坛项目 | Python之Web篇
python web项目_Django快速搭建论坛项目 | Python之Web篇

(完)

看完本文有收获?请转发朋友圈分享给更多人吧

关注「Python家庭」一起轻松学Python

python web项目_Django快速搭建论坛项目 | Python之Web篇
python web项目_Django快速搭建论坛项目 | Python之Web篇
python web项目_Django快速搭建论坛项目 | Python之Web篇
python web项目_Django快速搭建论坛项目 | Python之Web篇

扫码关注我们

原创不易,有帮助点个 “在看” 呗

python web项目_Django快速搭建论坛项目 | Python之Web篇
python web项目_Django快速搭建论坛项目 | Python之Web篇

继续阅读