博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BBS第一天
阅读量:6078 次
发布时间:2019-06-20

本文共 2712 字,大约阅读时间需要 9 分钟。

需求分析:

1,注册:前后台校验,ajax注册,选取图形,图形上传

2,登录:ajax登录,图形验证码

3.博客首页

4.个人站点

5.文章的点赞与点踩

6.评论:根评论,子评论

7.后台管理

8.发布博客:防止xss攻击

数据库设计

用户表:User

username:账号

password:密码

data_joined:注册时间

avatar:图像

telephone:电话

blog:博客站点(一对一)

博客站点表:Blog

name:站点名

title:标题

theme:站点主体样式

category:拥有的分类(多对多)

tag:拥有的标签(多对多)

分类表:Category

name:分类名

标签表:Tag

name:标签名

文章表:Article

title:文章标题

desc:文章摘要

content:文章内容

create_time:发布时间

blog:所属博客站点(一对多)

category:所属分类(一对多)

tag:拥有的标签(多对多)

点赞点踩表:UpOrDown

user:点踩点赞用户(一对多)

article:点赞点踩文章(一对多)

is_up:点踩或点赞

评论表:Common

user:评论者(一对多)

article:评论文章(一对多)

content:评论内容

parent:父评论(自关联)

接口规则

状态码:

SUCCESS('0000','查询成功')

NODATA('0001','查询成功无记录'),

FAILED('0002','查询失败')

ACCOUNT_ERROR('1000','账户不存在或被禁用')

API_NOT_EXISTS('1001','请求的接口不存在')

API_NOT_PER('1002','没有该接口的访问权限')

PARAMS_ERROR('1004','参数为空或格式错误')

SIGN_ERROR('1005','数据签名错误')

UNKNOWN_IP('1099','非法IP请求')

SYSTEM_ERROR('9999','系统异常')

规范制定:

{

'status':0,

'msg':'ok',

'data':{}

}

相关配置

DATABASES = {

'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'bbs',
'HOST': '127.0.0.1',
'USER': 'root',
'PASSWORD': 'root'
}
}
AUTH_USER_MODEL = 'blog.User'

STATICFILES_DIRS = [

os.path.join(BASE_DIR, 'static')
]

import pymysql

pymysql.install_as_MySQLdb()

 

 

1.Auth模块:用户登录认证

操作user表与session表

from django.contrib.auth.models import User,AbstractUser

user = User.objects.create_user()

user.set_password()

user.save()

user.check_password()

class MyUser(AbstractUser):

  info=models.CharField()

settings.py

AUTH_USER_MODEL = app_name.MyUser

from django.contrib.auth import authenticate,login,logout

authenticate(username="",password="")

login(request,user)

logout(request)

方法:request.user.is_authenticated

from django.contrib.auth.decorators import login_required

@login_required(login_url="")

 

2.forms模块:form表单验证与渲染

class CheckFrom(forms.Form):

username = forms.CharField(
min_length=3,
error_messages={
'min_length': '最少3',
'required': '必填项',
},
label="用户名",
widget=forms.PasswordInput(attrs={
'class': 'password',
'placeholder': '请输入密码'
})
)
def clean_username(self):
cleaned_username = self.cleaned_data.get('username')
from django.core.exceptions import ValidationError
pass # 如果出错,抛异常 raise ValidationError => key: username

return cleaned_username

def clean(self):
# 可以获取多个字段,完成多个字段的二次校验
pass # 如果出错,抛异常 raise ValidationError => key:__all__

check_form = CheckFrom({})
check_form.is_valid() # 做系统校验

# 类的属性的方法

# check_form.is_valid()
# check_form.cleaned_data
# check_form.errors
# 在DTL中使用
# check_form.username # 选择字段
# check_form.username.errors.0 # 渲染具体字段的错误信息

# all_error = check_form.errors.get('__all__')

# all_error.0
# check_form.username.label
# check_form.username.html_name # 字段名
# check_form.username.auto_id # id_字段名

转载于:https://www.cnblogs.com/suncunxu/p/10531853.html

你可能感兴趣的文章
CSS3让长单词与URL地址自动换行——word-wrap属性
查看>>
CodeForces 580B Kefa and Company
查看>>
开发规范浅谈
查看>>
Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming
查看>>
鼠标增强软件StrokeIt使用方法
查看>>
本地连接linux虚拟机的方法
查看>>
某公司面试java试题之【二】,看看吧,说不定就是你将要做的题
查看>>
BABOK - 企业分析(Enterprise Analysis)概要
查看>>
Linux 配置vnc,开启linux远程桌面
查看>>
NLog文章系列——如何优化日志性能
查看>>
Hadoop安装测试简单记录
查看>>
CentOS6.4关闭触控板
查看>>
ThreadPoolExecutor线程池运行机制分析-线程复用原理
查看>>
React Native 极光推送填坑(ios)
查看>>
Terratest:一个用于自动化基础设施测试的开源Go库
查看>>
修改Windows远程终端默认端口,让服务器更安全
查看>>
扩展器必须,SAS 2.0未必(SAS挺进中端存储系统之三)
查看>>
Eclipse遇到Initializing Java Tooling解决办法
查看>>
while((ch = getchar()) != '\n')
查看>>
好程序员web前端分享JS检查浏览器类型和版本
查看>>