zoukankan      html  css  js  c++  java
  • 利用Django搭建一个简单的博客网站(一)

    开发一个Django博客网站项目

    需要准备的环境 python3以上

    创建一个虚拟环境(以兼容不同的Django版本)

    1. 创建一个文件夹来专门存放Django(website)
    2. 安装Django
      pip3 install django
    3. 打开cmd到website中创建虚拟环境(djangoenv为虚拟环境项目名)
      cd desktop/website
      python -m venv djangoenv
    4. 继续输入 djangoenvScriptsactivate就可以将该虚拟环境激活了
      这是每一次使用虚拟环境都要进行的操作
      8.PNG
      以上虚拟环境就创建好了

    创建一个Django项目

    `django-admin startproject one(项目名)
    

    9.PNG
    初始化生成文件的用途
    Manage.py 一个在命令行中可以调用的网站管理工具
    one文件夹里
    init.py 告诉Python这个文件夹是一个模块
    settings.py one项目中一些配置
    urls.py 网站内各个网址声明
    usgi.py web服务器与django项目的接口

    新建一个一个Django App

    `cd one`
    python manage.py startapp blog(app项目名)
    

    再将App添加到settings.py里INSTALLED_APPS默认包括了一下Django自带的应用:
    10.PNG

    • django.contrib.admin--管理员站点
    • django.contrib.auth--认证授权系统
    • django.contrib.contenttypes--内容类型框架
    • django.contrib.sessions--会话框架
    • django.contrib.messages--消息框架
    • django.contrib.staticfiles--管理静态文件的框架

    默认开启的某些应用至少需要一个数据表,所以在使用他们之前要创建一些表

    python manage.py migrate

    这个命令是用来检查INSTALLED_APPS设置,为其中的每个应用创建需要的数据表(作用到数据库文件)

    Django的大致运行流程

    11.png

    对于不同路径的响应(一般是在urls.py--blog中修改)

    在blog文件夹下创建一个新的文件:urls.py用于处理网址的解析,同时在one文件夹下的urls.py中添加一条路径
    urls.py--one path('',include('blog.urls')),

    • urls.py--one中要添加from django.urls import path,include
    • urls.py--blog中添加from django.urls import path

    函数include()允许引用其他的URLconfs.,他会截断与此项相匹配的URL部分,并将剩余的字符串发送到URLconf以供进一步处理.包括其他URL模式时总应该使用include(),admin.site.urls是唯一的例外.

    函数path()具有四个参数,两个必须参数:routeview,两个可选参数: kwargsname一般只填写两个必选参数:

    route是一个匹配URL的准则.当Django响应一个请求时,他会从urlpatterns的第一项开始,按顺序以此匹配列表中的项,直到找到匹配的项,这些准则不会匹配GET和POST参数或域名.

    例如,URLconf 在处理请求 https://www.example.com/myapp/ 时,它会尝试匹配 myapp/ 。处理请求 https://www.example.com/myapp/?page=3 时,也只会尝试匹配 myapp/

    path() 参数: view
    当 Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并传入一个 HttpRequest 对象作为第一个参数,被“捕获”的参数以关键字参数的形式传入。
    route参数可以有一些特定的格式来处理路径

    • <slug:blog_link>--slug可以识别字符和数字
    • <int:blog_id>--int用于识别数字,表示这个网址是个数字存到blog_id这个变量里
    • <str:blog_title>--str用于识别字符串

    13.png

    14.png

    如上图所示有一个默认的路径http://127.0.0.1:8000/admin/

    编写模型

    模型是您的数据唯一而且准确的信息来源.它包含您正在存储的数据的重要字段和行为.一般来说,每一个模型都映射一个数据库表

    • 每个模型都是一个python类,这些类继承django.db.models.Model
    • 模型类的每个属性都相当于一个数据库字段
    • 综上,Django正在给你一个自动生成访问数据库的API

    19.png

    20.png

    三个关联模型是为了防止出现重复过多的问题(方便添加数据)

    21.png

    在models.py文件中建立一个Post模型,还有与之相关联的Category,Tag模型

    • ForeignKey()--一般用于一对多的模型
    • ManyToManyField()--一般用于多对多的模型
    • 关联作者模型有现成的直接引入
      from django.contrib.auth.models import User

    22.png

    然后,想要在后台直接操作这三个数据,需要现在admin.py中注册一下

    24.png

    • from .models import Post,Category,Tag--将Post,Category,Tag从models.py中导入

    • admin.site.register --进行注册

    最后每当我们在models做了修改之后都需要执行两个操作

    python manage.py makemigrations
    python manage.py migrate

    第一个命令用于检测你对模型文件的修改,并且把修改的部分作为一次迁移(这是一种对于变化的存储形式)
    第二个命令,在数据库中创建新定义的模型的数据表

  • 相关阅读:
    【模板】Sparse-Table
    UVa 11235 Frequent values
    【模板】树状数组
    UVa 1428 Ping pong
    数学技巧
    UVa 11300 Spreading the Wealth
    UVa 11729 Commando War
    UVa 11292 Dragon of Loowater
    POJ 3627 Bookshelf
    POJ 1056 IMMEDIATE DECODABILITY
  • 原文地址:https://www.cnblogs.com/vincy99/p/9290338.html
Copyright © 2011-2022 走看看