技术交流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
出现的bug.png

bug已解决.png

5.pip一键导出和安装

  • 一键导出:pip freeze > requiresment.txt
  • 一键安装:pip install -r requiresment.txt