跟DW学Django-T2

快速搭建网站

本节课通过views.py、urls.py等文件的相互指向完成“前端-数据库内容-后端”的展示。目前不是前后端分离的写法——前后端分离的话,前端是通过接口去获得需要的查询结果。

通过宝塔创建网站

因为通过指令来创建网站较为繁琐,所以通过宝塔进行网站的创建。具体路径和方式如下:
登入宝塔——网站(左侧工具栏)——添加站点(绿色按钮)——创建站点

  • 在域名处写入:<IP 地址>
  • 备注:myBlog
  • 根目录: /www/wwwroot/myBlog
  • FTP: 如需上传内容,可以选择创建
  • 数据库:MySQL,因为已经安装了mysql,所以可以直接选择
    • 数据库账号:blog
    • 数据库密码:自己创建
  • PHP版本:默认
  • 网站分类:默认
    点击提交,直到出现以下页面
    在这里插入图片描述
    如需运行,则点击“网站——网站名(想要运行的)——域名管理——域名”。可见以下情况,其表示已经创建好nginx和一个静态页面。如果点击的不是网站名,而是“根目录”就可以看到这个网站的结构。
    在这里插入图片描述
    点击根目录,复制根目录所在的文件夹路径,并到VSCode的open中粘贴,从而打开该文件夹。但因为该文件夹中未有Django(更没有虚拟环境),所以可考虑到宝塔中修改该文件夹的路径,再在新路径的文件夹中加入django——
  • 网站——网站名——网站目录——
  • 点击网站目录中的网站目录的文件夹图标
  • 选择想要存放的目的文件夹:/home/wuzhiping/Desktop/DjangoDev/www

用Django在创建好的站点中建设网站

一个App中的admin.py用于控制后台界面的呈现(先注册),models.py用于与数据库交互——包括增减改删字段。为了避免models.py中的内容的耦合和变量之间设定default的不同,需要提前把表的字段、内容和关系定义好

通过VSCode打开根文件夹(既有env文件夹也有www文件夹-新站点),然后激活虚拟环境,再cd 到 www文件夹中创建django项目。由于一开始创建www的时候没有增加足够的权限,可以到宝塔中的www文件夹,在右方选择权限,勾选上‘写入’,如下图所示。
在这里插入图片描述
在创建django项目的时候,可以命名为config,因为django默认该名字会与设置文件所在的文件夹同名,但是改文件夹名只能更改外侧的文件夹名,不能更改settings.py等配置文件所在的文件夹名,否则会让文件找不到路径。所以,此时就可以修改外侧config文件夹名字为myBlog,然后形成myBlog - config - settings.py…的结构。

创建app

# 创建app:保证在有manage.py 的目录下执行
python3 manage.py startapp blog

就会出现blog为文件名的文件夹,当中会带有自身app所需的配置文件。但是此时,主要的config文件下的settings.py中的INSTALLED_APPS列表并不包含刚刚创建的blog应用,所以需要添加新创建的app(blog)到该列表中。
在这里插入图片描述

后台界面

用django的好处是它本身就自带了一个后台画面,可以到project的根目录下的config文件夹中urls.py中的urlpatterns中看到admin字样的信息。如果输入网页中的地址就可以看到以下画面,
在这里插入图片描述
但此时,我们并没有后台管理或者管理员的账号和密码,所以需要创建。但如果直接创建,输入以下命令

# 创建超级管理员(后台账号)
python3 manage.py createsuperuser

但是此前应该先同步数据库,因为django自带的db.sqlite3数据库中有既定的表单来记录用户信息。通过以下命令可同步数据库

python3 manage.py migrate

在migrate后,在输入创建超级管理员账号的命令就会出现,以下内容需要填写:

  • Username (leave blank to use ‘<当前用户账号>’): <当前用户账号>
  • Email address: (目前可以随便写,因为目前不涉及后台注册时候的邮件发送——当注册完之后会通过该邮件发送信息确认)
  • Password:
  • Password(again):
  • 会出现检验密码的程序:
    The password is too similar to the email address.
    This password is too short. It must contain at least 8 characters.
    This password is entirely numeric.

但当看到以下信息时,意味着创建超级管理员成功
在这里插入图片描述
刷新后台界面,输入刚刚创建的超级管理员账号信息即可。
在这里插入图片描述

更改后台界面的语言(英文——> 中文)

在settings.py中,找到LANGUAGE_CODE,将原始的’en-us’ 改为 'zh-hans’即可。

更改后台界面的时区

在settings.py中,找到TIME_ZONE (below LANGUAGE_CODE),将原始的’UTC’ 改为 'Asia/Shanghai’即可。

后台中增加已经创建的app(blog)的信息

到该app(blog)下的models.py中写入以下信息,关于Meta的信息可以查阅[Django之Meta]。(https://blog.csdn.net/bbwangj/article/details/79967858)

class Blog(models.Model):
    # 继承主类models.Model:继承models的全部内容

	# 创建title字段,并允许输入最多50个字符,标题以“标题”展示
    title = models.CharField(max_length=50, verbose_name='标题')

	# 增加编写博客内容的文本框: 不能用CharField(CF),因为CF有文本限制
	# 创建编写长文要用TextField
    content = models.TextField(verbose_name='文章内容', default='')
	
	# 增加查阅次数字段:为了让用户不能编辑,所以需要在app下的admin.py进行控制
    count = models.IntegerField(verbose_name='阅读次数', default=0)

    # 增加创建时间字段
    create_time = models.DateTimeField(auto_now=True, verbose_name='创建时间')

	class Meta:
	# 将app名字以“博客”显示
        verbose_name = '博客'
        verbose_name_plural= verbose_name

	 def __str__(self) -> str:
	 # 让每篇文章都能以自己的title来命名
	 # -> str,最好带上,因为python是弱类型语言,str很容易就会被改变类型
	 # 而且因为此类不会影响数据库,所以不用makemigrations 和 migrate也能正常呈现——这个只改变进入数据库之前的呈现方式,并不会增删改除寄存在数据库里的内容(字段信息和内容)
        return self.title

但此时,后台仍没有任何变化。所以要在app中的admin.py增加引用,因为admin就是把app的内容都显示在后台(而admin和models都在同一个文件夹下,所以可以直接通过.models来引用)
方式一:

from .models import Blog
admin.site.register(Blog)

方式二:(较方式一更好,因为可以不用整个Blog都带过来,可以通过新建的类BlogAdmin进行控制)

from .models import Blog
@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):
# 空类即可,因为重要的是@admin.register(Blog),需要admin和Blog进行关联
	# pass
	
	# 控制后台中能可显示的内容:只能填写已经创建好的字段
	list_display = ('title', 'create_time', 'count')

在这里插入图片描述

此时,后台就会出现Blog的表格,证明已经成功将Blog这个app成功加入后台,并对其进行管理。但是点入Blog后会出现以下信息——说明,并未在信息表中加入Blog的信息。
在这里插入图片描述
所以,必须在project目录下(有sqlite和manage.py文件)运行:

# 将app(Blog)下migrations文件中的内容转化为需要进行迁移、同步的文件_initial.py
python3 manage.py makemigrations

出现0001_initial.py待同步文件,然后此时再进行同步

python3 manage.py migrate

然后上述报错页面就会出现以下信息,
在这里插入图片描述
点击右上方的“ADD BLOG +”就可以增加Title了。

前台界面

修改默认的界面,让大家可以看到博客的内容,所以此处主要用到views.py,而views.py文件相当于是接收用户的请求,然后通过前端页面返回对应查询的内容。

创建模版

首先我们新建一个文件夹templates来存放我们之后需要建的页面的模版。然后,到settings.py文件中的TEMPLATES变量的DIRS中,增加templates文件夹所在的路径,以便寻获该文件夹肿的templates。增加路径的过程如下,

  • 在DIRS对应的list中添加[os.path.join(BASE_DIR, ‘templates’)]
  • 其中,BASE_DIR位于settings.py中(前部分),表明该project所在的文件位置
  • 而templates则是新创建、用于存储views 的templates的文件夹
    具体代码:
import os
TEMPLATES = [
    {
   
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')], 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值