从零开始做个人网站(6)

写在前面:

由于作者仅仅是自学,且是独自做这个项目,代码中出现不少漏洞、错误、累赘或常识问题是难免的,作者也在不断努力学习中,请各位看官多提意见,轻喷~


基本信息

1. 项目环境

Python 3.10.7

Django 4.2

编辑器:VSCode

操作系统:Windows 10

2. 项目背景

正好近一段时间在自学 Django,突发奇想不妨试着做个个人网站练练手吧~

3. 项目构思

暂定为:登录系统 + 个人主页 + 个人博客 + 个人作品


项目代码

今天的任务是做完 media 配置 、发送邮件的配置、自定义标签的配置

1. media 配置

首先找到根 URLconf(/LZLBlog/LZLBlog/urls.py)中的 urlpatterns 列表

首先需要引入 settings 与 static

from django.conf.urls.static import static
from django.conf import settings

在 列表后 添加一行代码

static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

整体根 URLconf 代码如下:

"""LZLBlog URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/dev/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from django.urls import include
from django.conf.urls.static import static
from django.conf import settings
from login import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('login/', include('login.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

handler404 = views.page_not_found

修改根 URLconf 完成后,还需要在 /LZLBlog/LZLBlog/settings.py 中进行配置

首先在前面引入 os

import os

其次在文件最后添加两行

MEDIA_URL = '/media/'

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

整体 settings.py 代码如下

# ………………

# from pathlib import Path

import os

# ………………

# DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

MEDIA_URL = '/media/'

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

最后,路径配置好了,文件夹自然也要创建一下

在 /LZLBlog/ 路径下创建一个名为 media 的文件夹

在 media 文件夹内创建两个 子文件夹 logintinymce

在 login 文件夹内创建 子文件夹 avatar

最终 media 文件夹总结构如下:

2. 发送邮件配置

这个比较麻烦,还需要有一个邮箱账号

我这里使用的是 163 网易邮箱,因为这个开通 smtp 比较方便

首先需要有一个邮箱账号,我这里新注册了一个

1. 在主页最上方找到设置 - POP3/SMTP/IMAP

 

2. 开启 IMAP/SMTP 服务

3. 点击开启后,会提示进行账户安全验证,跟着走就行,之后会出现 授权密码,一定要记下来! 

 

4. 进入 /LZLBlog/LZLBlog/settings.py,在文件最后添加如下几行:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

EMAIL_HOST = 'smtp.163.com'  # 根据你用的哪个发送端来定

EMAIL_PORT = 25

EMAIL_HOST_USER = '………………………………'  # 你的邮箱用户名,带 @xxx.com

EMAIL_HOST_PASSWORD = '……………………………………'  # 刚才的授权密码

CONFIRM_DAYS = 1

现在发送邮件就配置完毕了!

3. 自定义标签配置

首先在 /LZLBlog/login 目录下新建一个文件夹 templatetags (名字不能变)

然后再 templatetags 文件夹内新建一个空 Python 文件 __init__.py

再在 templatetags 文件夹内新建一个 Python 文件 extratag.py,写入如下内容:

from django import template

register = template.Library()

@register.filter(name='addstr')
def addstr(value, data):
    return str(value)+str(data)

与在 /LZLBlog/manage.py 同一目录下打开 cmd,运行指令

python manage.py makemigrations

再执行指令

python manage.py migrate

指令运行图如下:

最终 templatetags 文件夹结构如下:

 

至此,本篇的内容就结束啦~

下篇看看登录系统的成果展示~