技术交流QQ群:1027579432,欢迎你的加入!
本教程来源于B站杨仕航Django2.0开发视频教程,如需转载,必须注明来源!
1.简单构建
- 网站的功能模块约等于Django App
- 博客
- 评论
- 阅读
- 用户 -->第三方登录(QQ或者微博)
- 点赞
2.开启本地虚拟环境
- 隔离python项目的运行环境:pip install virtualenv
- 避免多个项目之间python库的冲突
- 完整便捷导出python的列表
3.virtualenv的使用方法
- 创建: virtualenv mysite_env(虚拟环境名)
- 启动: Scripts文件目录下,执行activate
- 退出:执行deactivate
- 安装Django2.0:pip install Django==2.0
4.初步创建blog应用
- 博文 + 博客分类(一篇博客属于一种类型[本教程采用这种],一篇博客属于多种类型)
- 创建项目:启动虚拟环境后,执行django-admin startproject mysite
- 创建应用:mysite文件目录下执行,python manage.py startapp blog
- 打开blog文件夹下的models.py文件,添加如下内容:
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
# 创建博文类型模型
class BlogType(models.Model):
type_name = models.CharField(max_length=15)
# 创建博文模型
class Blog(models.Model):
title = models.CharField(max_length=50)
# 一篇博文属于一种类型,因此博客通过外键关联到博文类型
blog_type = models.ForeignKey(BlogType, on_delete=models.DO_NOTHING)
content = models.TextField()
author = models.ForeignKey(User, on_delete=models.DO_NOTHING)
created_time = models.DateTimeField(auto_now_add=True)
last_updated_time = models.DateTimeField(auto_now=True)
- 对数据库进行初始化:在mysite文件夹下,执行python manage.py migrate
- 创建管理员账户和登录密码:在mysite文件夹下,执行python manage.py createsuperuser
E:\Django\mysite_env\Scripts\mysite
$ python manage.py createsuperuser
Username (leave blank to use 'administrator'): CurryCoder
Email address:
Password:
Password (again):
Superuser created successfully.
- 将刚刚创建的应用blog加入到全局配置文件settings.py中,如下所示:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
]
- 创造迁移文件:在mysite文件夹下,执行python manage.py makemigrations,如下所示:
E:\Django\mysite_env\Scripts\mysite
$ python manage.py makemigrations
Migrations for 'blog':
blog\migrations\0001_initial.py
- Create model Blog
- Create model BlogType
- Add field blog_type to blog
- 对数据库进行同步:在mysite文件夹下,执行python manage.py migrate,如下所示:
E:\Django\mysite_env\Scripts\mysite
$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, blog, contenttypes, sessions
Running migrations:
Applying blog.0001_initial... OK
- 注册模型:打开blog文件夹下的admin.py文件,添加如下内容:
from django.contrib import admin
from .models import BlogType, Blog
# Register your models here.
# 注册模型
@admin.register(BlogType)
class BlogTypeAdmin(admin.ModelAdmin):
list_display = ('id', 'type_name')
@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):
list_display = ('title', 'blog_type', 'author',
'created_time', 'last_updated_time')
- 打开全局配置文件settings.py,将当中的LANGUAGE_CODE变量值改为'zh-Hans',此时已对后台管理页面进行了汉化。
- 启动本地服务:python manage.py runserver,打开浏览器,输入网址localhost:8000/admin进入后台管理页面。
- 当新增博文时,无法显示blog_type博文类型,如下所示。因此需要打开blog文件夹下的models.py文件,添加__str()__方法,如下内容所示:
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
# 创建博文类型模型
class BlogType(models.Model):
type_name = models.CharField(max_length=15)
def __str__(self):
return self.type_name
# 创建博文模型
class Blog(models.Model):
title = models.CharField(max_length=50)
# 一篇博文属于一种类型,因此博客通过外键关联到博文类型
blog_type = models.ForeignKey(BlogType, on_delete=models.DO_NOTHING)
context = models.TextField()
author = models.ForeignKey(User, on_delete=models.DO_NOTHING)
created_time = models.DateTimeField(auto_now_add=True)
last_updated_time = models.DateTimeField(auto_now=True)
def __str__(self):
return "<Blog: %s>" % self.title
![](https://img.haomeiwen.com/i13407176/4a1bb62f71e02907.png)
出现的bug.png
![](https://img.haomeiwen.com/i13407176/585515fc693ec9a6.png)
bug已解决.png
5.pip一键导出和安装
- 一键导出:pip freeze > requiresment.txt
- 一键安装:pip install -r requiresment.txt
网友评论