Anaconda下Django博客开发2021.7.17

本文详细介绍了使用Django框架构建博客系统的过程,包括环境配置、模型创建、数据库操作、HTTP请求处理、模板应用、后台创建及网页跳转。通过创建应用、定义模型、设置URL路由、处理视图函数、应用网页模板、数据库交互和后台管理等功能,逐步搭建了一个完整的博客系统。同时,还涉及到模板继承、静态文件处理和模板标签的使用,确保了页面的展示效果和用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.实现网页开启 

2.创建网页数据库模型

3.数据库数据操作

4.处理HTTP请求

5.应用网页模板

6.开启创造后台

7.实现网页跳转


1.实现网页开启 

打开Anaconda Prompt

  • 输入:conda env list——查看Anaconda当前已经配置的环境
  • 输入:activate+环境名——切换环境
  • 输入:conda list ——查看当前环境下已安装模块
  • 输入:django-admin startproject test1——创建test1项目(执行成功后会产生一个test1文件夹,里面的内容有manage.py,管理文件,init.py,表示当前文件夹是python的一个模块,settings.py,保存设置信息,urls.py,储存url地址文件,wsgi.py,WSGI协议文件)
  • 输入:python manage.py startapp app名称——创建应用,会自动创建目录(找到settings.py中的INSTALLED_APPS设置项,将应用添加进去'app名称')
    # Application definition
    
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'app',
    ]
  • 输入:python manage.py runserver——启动开发web服务器退出方法:Quit the server with CTRL-BREAK.

在浏览器中访问127.0.0.1:8000/可以得到启动成功的页面

2.创建网页数据库模型

在创建的app文件夹中包含models.py文件,数据库的模型代码就写在这里面

文件中创建了博客所需的三个数据库表(Class):分类,标签,文章

在文章中包含了标题、正文、发表/修改时间、摘要、作者等数据,同时还包含了与分类、标签的对应关系

from django.db import models
from django.contrib.auth.models import User


class Category(models.Model):
    name = models.CharField(max_length=100)

class Tag(models.Model):
    name = models.CharField(max_length=100)

class Post(models.Model):
    title = models.CharField(max_length=70)

    body = models.TextField()

    created_time = models.DateTimeField()
    modified_time = models.DateTimeField()

    excerpt = models.CharField(max_length=200, blank=True)

    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    tags = models.ManyToManyField(Tag, blank=True)

    author = models.ForeignKey(User, on_delete=models.CASCADE)

 下面是对代码的注解:

CharField 用于指定分类名 name 的数据类型(字符型 CharField 、日期时间类型 DateTimeField、整数类型 IntegerField 等等)
django 内置的全部类型可查看文档
https://docs.djangoproject.com/en/2.2/ref/models/fields/#field-types

较短的字符使用CharField,大段文本使用 TextField

文章摘要,可以没有文章摘要,但默认情况下 CharField 要求我们必须存入数据,否则就会报错,指定 CharField 的 blank=True 参数值后就可以允许空值了。


文章与分类使用 ForeignKey,一对多的关联关系, django 2.0 以后,ForeignKey 必须传入一个 on_delete 参数用来指定当关联的数据被删除时,被关联的数据的行为,我们这里假定当某个分类被删除时,该分类下全部文章也同时被删除,因此使用 models.CASCADE 参数,意为级联删除

文章与标签使用 ManyToManyField ,多对多的关联关系,同时我们规定文章可以没有标签,因此为标签 tags 指定了 blank=True
https://docs.djangoproject.com/en/2.2/topics/db/models/#relationships

文章作者,这里 User 是从 django.contrib.auth.models 导入的
django.contrib.auth 是 django 内置的应用,专门用于处理网站用户的注册、登录等流程

数据库模型的代码还需要django 翻译成数据库语言,因此实际上这些数据库表还没有真正的在数据库中创建

  • 输入:python manage.py makemigrations

  • 输入:python manage.py migrate

django 使用了 Python 内置的 SQLite3 数据库,SQLite3 是一个十分轻巧的数据库,项目根目录下多出了一个 db.sqlite3 的文件,这就是 SQLite3 数据库文件

3.数据库数据操作

输入:python manage.py shell——开启交互式命令行

Ctrl + break 退出交互式命令行

4.处理HTTP请求

Web 应用的交互过程其实就是 HTTP 请求与响应的过程

使用浏览器来上网,上网流程大致是这样的:

  1. 打开浏览器,在地址栏输入想访问的网址
  2. 浏览器知道我们想要访问哪个网址后,把我们的访问意图包装成一个 HTTP 请求,发给我们想要访问的网址所对应的服务器
  3. 服务器处理HTTP请求后生成HTTP 响应给浏览器,浏览器解读这个响应,并显示相关内容

django 作为一个 Web 框架,它的使命就是处理流程中的第二步,即接收浏览器发来的 HTTP 请求,返回相应的 HTTP 响应

  1. 在 blog 应用的目录下创建一个 urls.py 文件
    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('', views.index, name='index'),
    ]
  2. 实际编写定义在 views.py 文件中的view.index函数

    from django.http import HttpResponse
    
    def index(request):
        return HttpResponse("欢迎访问我的博客首页!"
为什么在pycharm下载安装插件会失败?:PS D:\NEW desktop\app_house> pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pyhive django-adminlte-ui==1.7.2 beautifulsoup4==4.12.2 fake_useragent==1.4.0 certifi==2020.12.5 chardet==4.0.0 django==3.1.7 djangorestframework==3.12 et-xmlfile==1.0.1 idna==2.10 jdcal==1.4.1 openpyxl==3.0.6 pytz==2021.1 requests==2.25.1 django-simpleui==2023.3.1 urllib3==1.26.3 xlwt lxml numpy beautifulsoup4 selenium==3.12.0 pandas pyecharts snownlp geopy wordcloud scikit-learn jieba faker django-import-export==2.7.1 WARNING: Ignoring invalid distribution -ip (d:\anaconda\lib\site-packages) Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple Collecting pyhive ERROR: HTTP error 403 while getting https://pypi.tuna.tsinghua.edu.cn/packages/f6/ec/5c658b3a4d99a6d91450 30cc8e003c3f7efc668d866e88544812ab0af310/PyHive-0.7.0.tar.gz (from https://pypi.tuna.tsinghua.edu.cn/simple/pyhive/) [notice] A new release of pip is available: 24.3.1 -> 25.0.1 [notice] To update, run: python.exe -m pip install --upgrade pip ERROR: Could not install requirement pyhive from https://pypi.tuna.tsinghua.edu.cn/packages/f6/ec/5c658b3a4 d99a6d9145030cc8e003c3f7efc668d866e88544812ab0af310/PyHive-0.7.0.tar.gz because of HTTP error 403 Client Er ror: Forbidden for url: https://pypi.tuna.tsinghua.edu.cn/packages/f6/ec/5c658b3a4d99a6d9145030cc8e003c3f7e fc668d866e88544812ab0af310/PyHive-0.7.0.tar.gz for URL https://pypi.tuna.tsinghua.edu.cn/packages/f6/ec/5c6 58b3a4d99a6d9145030cc8e003c3f7efc668d866e88544812ab0af310/PyHive-0.7.0.tar.gz (from https://pypi.tuna.tsinghua.edu.cn/simple/pyhive/) PS D:\NEW desktop\app_house>
最新发布
03-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值