从零开始做个人网站(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 文件夹内创建两个 子文件夹 login 和 tinymce
在 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 文件夹结构如下:
至此,本篇的内容就结束啦~
下篇看看登录系统的成果展示~