当前位置: 首页 > news >正文

网站策划的内容包含了什么?企业设计网站推荐

网站策划的内容包含了什么?,企业设计网站推荐,网站优化检测,珠海企业网站建设费用一.BBS项目介绍 1.项目开发流程 项目立项 ------ 公司高层决定需求调研和分析 ------ 市场人员#xff0c;技术人员参与 -需求文档说明开发部门开会 ------ 确定项目架构#xff0c;技术选型#xff0c;数据库设计UI#xff0c;UD团队#xff08;产品经… 一.BBS项目介绍 1.项目开发流程 项目立项  ------  公司高层决定需求调研和分析  ------  市场人员技术人员参与 -需求文档说明开发部门开会  ------  确定项目架构技术选型数据库设计UIUD团队产品经理  ---  原型图  ---  切图  ---  交给前端分任务开发 -前端 -后端对着原型图 ---  设计数据库、设计功能前后端联调提交版本测试发布上线 2.BBS项目功能 注册功能 -校验 -ajax注册 -头像显示和上传登录首页文章显示个人站点 -显示这个人写的所有文章 -侧边栏有分类、标签、随笔文章详情点赞、点踩评论 -根评论 -子评论后台管理 -查看所有文章 -删除文章 -新增文章xss攻击去除 3.数据库设计 用户表         UserInfo ---  扩写auth的user表博客表         Blog  ---  跟用户表做一对一关联文章表         Article文章分类表         Category标签表         Tag点赞点踩表         UpAndDown评论表         Commit 4.数据库关联关系 用户和博客一对一 博客和文章一对多        一个博客下有很多文章关联字段写在文章表里 博客和分类一对多        一个博客下创建多个分类关联字段写在分类表中 博客和标签一对多        一个博客下创建多个标签关联字段写在标签表中 文章和分类一对多        一个文章只能属于一个分类一个分类下有很多文章关联字段写在文章中 文章和标签多对多        一个文章可以有多个标签一个标签下可以有多个文章多对多关系创建中间表 点赞和用户一对多        一个用户可以点很多赞关联字段写在点赞表中 评论和用户一对多        一个用户可以评论多个评论的一条记录只属于一个用户关联字段写在评论表中 文章和点赞一对多        一篇文章可以被点多次但是一个点赞的记录只对应一篇文章关联字段写在点赞表中 文章和评论一对多        一篇文章可以被评论多次但是一个评论的记录只对应一篇文章关联字段写在评论表中 5.创建项目迁移表环境搭建 # 解释器环境中有 djagno 3.2.20# 1 pycharm 创建 # 2 命令创建# 1 国际化 LANGUAGE_CODE zh-hans TIME_ZONE Asia/Shanghai USE_I18N True USE_L10N True USE_TZ False # 2 配置了static STATIC_URL /static/ STATICFILES_DIRS [os.path.join(BASE_DIR, static)]# 3 配置了media MEDIA_ROOT os.path.join(BASE_DIR, media) MEDIA_URL /media/# 4 配置了链接mysql DATABASES {default: {ENGINE: django.db.backends.mysql,NAME: blog,USER: root,PASSWORD: 1234,HOST: 127.0.0.1,PORT: 3306} } 二.注册功能 1.注册功能基本需求 用户名密码确认密码邮箱手机号头像 2.form组件 1form组件有哪些用处 快速生成前端页面数据校验错误处理 2如何使用 校验字段功能 以注册功能为例 # models.pyclass UserInfo(models.Model):namemodels.CharField(max_length32)pwdmodels.CharField(max_length32)emailmodels.EmailField()# HTML里!DOCTYPE html html langen headmeta charsetUTF-8titleTitle/title/head bodyform action methodpost{% csrf_token %}divlabel foruser用户名/labelpinput typetext namename idname/p/divdivlabel forpwd密码/labelpinput typepassword namepwd idpwd/p/divdivlabel forr_pwd确认密码/labelpinput typepassword namer_pwd idr_pwd/p/divdivlabel foremail邮箱/labelpinput typetext nameemail idemail/p/divinput typesubmit /form/body /html# views.py# forms组件 from django.forms import widgetswid_01widgets.TextInput(attrs{class:form-control}) wid_02widgets.PasswordInput(attrs{class:form-control})class UserForm(forms.Form):nameforms.CharField(max_length32,widgetwid_01)pwdforms.CharField(max_length32,widgetwid_02)r_pwdforms.CharField(max_length32,widgetwid_02)emailforms.EmailField(widgetwid_01)telforms.CharField(max_length32,widgetwid_01)def register(request):if request.methodPOST:formUserForm(request.POST)if form.is_valid():print(form.cleaned_data) # 所有干净的字段以及对应的值else:print(form.cleaned_data) #print(form.errors) # ErrorDict : {校验错误的字段:[错误信息,]}print(form.errors.get(name)) # ErrorList [错误信息,]return HttpResponse(OK)formUserForm()return render(request,register.html,locals())渲染标签功能 渲染方式一 !DOCTYPE html html langen headmeta charsetUTF-8titleTitle/title!-- 最新版本的 Bootstrap 核心 CSS 文件 --link relstylesheet hrefhttps://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css integritysha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4VaPmSTsz/K68vbdEjh4u crossoriginanonymous /head body h3注册页面/h3 div classcontainerdiv classrowdiv classcol-md-6 col-lg-offset-3form action methodpost{% csrf_token %}divlabel for用户名/label{{ form.name }}/divdivlabel for密码/label{{ form.pwd }}/divdivlabel for确认密码/label{{ form.r_pwd }}/divdivlabel for 邮箱/label{{ form.email }}/divinput typesubmit classbtn btn-default pull-right/form/div/div /div/body /html渲染方式二 form action methodpost{% csrf_token %}{% for field in form %}divlabel for{{ field.label }}/label{{ field }}/div{% endfor %}input typesubmit classbtn btn-default pull-right/form渲染方式三 form action methodpost{% csrf_token %}{{ form.as_p }}input typesubmit classbtn btn-default pull-right/form渲染错误信息功能 # views.pydef register(request):if request.methodPOST:formUserForm(request.POST)if form.is_valid():print(form.cleaned_data) # 所有干净的字段以及对应的值else:print(form.cleaned_data) #print(form.errors) # ErrorDict : {校验错误的字段:[错误信息,]}print(form.errors.get(name)) # ErrorList [错误信息,]return render(request,register.html,locals())formUserForm()return render(request,register.html,locals())# 模板form action methodpost novalidate{% csrf_token %}{% for field in form %}divlabel for{{ field.label }}/label{{ field }} span classpull-right stylecolor: red{{ field.errors.0 }}/span/div{% endfor %}input typesubmit classbtn btn-default/form组件参数配置 class Ret(Form):name forms.CharField(max_length10, min_length2, label用户名,error_messages{required: 该字段不能为空, invalid: 格式错误, max_length: 太长,min_length: 太短},widgetwidgets.TextInput(attrs{class:form-control}))pwd forms.CharField(max_length10, min_length2, widgetwidgets.PasswordInput(attrs{class:form-control}))email forms.EmailField(label邮箱, error_messages{required: 该字段不能为空, invalid: 格式错误})局部钩子 from django.core.exceptions import NON_FIELD_ERRORS, ValidationError def clean_name(self):valself.cleaned_data.get(name)retUserInfo.objects.filter(nameval)if not ret:return valelse:raise ValidationError(该用户已注册!)def clean_tel(self):valself.cleaned_data.get(tel)if len(val)11:return valelse:raise ValidationError(手机号格式错误)全局钩子 def clean(self):pwdself.cleaned_data.get(pwd)r_pwdself.cleaned_data.get(r_pwd)if pwd and r_pwd:if pwdr_pwd:return self.cleaned_dataelse:raise ValidationError(两次密码不一致)else:return self.cleaned_data pwd_errmy_form.errors.get(__all__) from django import formsfrom django.forms import widgets from app01.models import UserInfofrom django.core.exceptions import NON_FIELD_ERRORS, ValidationErrorclass UserForm(forms.Form):nameforms.CharField(min_length4,label用户名,error_messages{required:该字段不能为空},widgetwidgets.TextInput(attrs{class:form-control}))pwdforms.CharField(min_length4,label密码,widgetwidgets.PasswordInput(attrs{class:form-control}))r_pwdforms.CharField(min_length4,label确认密码,error_messages{required:该字段不能为空},widgetwidgets.TextInput(attrs{class:form-control}))emailforms.EmailField(label邮箱,error_messages{required:该字段不能为空,invalid:格式错误},widgetwidgets.TextInput(attrs{class:form-control}))telforms.CharField(label手机号,widgetwidgets.TextInput(attrs{class:form-control}))def clean_name(self):valself.cleaned_data.get(name)retUserInfo.objects.filter(nameval)if not ret:return valelse:raise ValidationError(该用户已注册!)def clean_tel(self):valself.cleaned_data.get(tel)if len(val)11:return valelse:raise ValidationError(手机号格式错误)def clean(self):pwdself.cleaned_data.get(pwd)r_pwdself.cleaned_data.get(r_pwd)if pwd and r_pwd:if pwdr_pwd:return self.cleaned_dataelse:raise ValidationError(两次密码不一致)else:return self.cleaned_data from django.shortcuts import render,HttpResponsefrom app01.myforms import *def reg(request):if request.methodPOST:print(request.POST)#formUserForm({name:yu,email:123qq.com,xxxx:alex})formUserForm(request.POST) # form表单的name属性值应该与forms组件字段名称一致print(form.is_valid()) # 返回布尔值if form.is_valid():print(form.cleaned_data) # {name:yuan,email:123qq.com}else:print(form.cleaned_data) # {email:123qq.com}# print(form.errors) # {name:[..........]}# print(type(form.errors)) # ErrorDict# print(form.errors.get(name))# print(type(form.errors.get(name))) # ErrorList# print(form.errors.get(name)[0])# 全局钩子错误#print(error,form.errors.get(__all__)[0])errorsform.errors.get(__all__)return render(request,reg.html,locals())form.is_valid() :返回布尔值form.cleaned_data :{name:yuan,email:123qq.com}form.errors :{name:[..........]}formUserForm()return render(request,reg.html,locals()) !DOCTYPE html html langen headmeta charsetUTF-8titleTitle/titlestyle.error{color: red;}/style!-- 最新版本的 Bootstrap 核心 CSS 文件 --link relstylesheet hrefhttps://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.cssintegritysha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4VaPmSTsz/K68vbdEjh4u crossoriginanonymous /head bodydiv classcontainerdiv classrowdiv classcol-md-6 col-lg-offset-3{#h3简单form/h3#}{##}{##}{#form action methodpost novalidate#}{# {% csrf_token %}#}{# p用户名input typetext namename/p#}{# p密码 input typetext namepwd/p#}{# p确认密码 input typetext namer_pwd/p#}{# p邮箱 input typetext nameemail/p#}{# p手机号 input typetext nametel/p#}{# input typesubmit#}{##}{#/form#}hrh3forms组件渲染方式1/h3form action methodpost novalidate{% csrf_token %}p{{ form.name.label }}{{ form.name }} span classpull-right error{{ form.name.errors.0 }}/span/pp{{ form.pwd.label }}{{ form.pwd }} span classpull-right error{{ form.pwd.errors.0 }}/span/pp确认密码{{ form.r_pwd }} span classpull-right error{{ form.r_pwd.errors.0 }}/spanspan classpull-right error{{ errors.0 }}/span/pp邮箱 {{ form.email }} span classpull-right error{{ form.email.errors.0 }}/span/pp手机号 {{ form.tel }} span classpull-right error{{ form.tel.errors.0 }}/span/pinput typesubmit/form{#h3forms组件渲染方式2/h3#}{##}{#form action methodpost novalidate#}{# {% csrf_token %}#}{##}{# {% for field in form %}#}{##}{# div#}{# label for{{ field.label }}/label#}{# {{ field }}#}{# /div#}{##}{# {% endfor %}#}{##}{# input typesubmit#}{#/form#}{##}{#h3forms组件渲染方式3/h3#}{##}{#form action methodpost#}{# {% csrf_token %}#}{##}{# {{ form.as_p }}#}{##}{# input typesubmit#}{#/form#}/div/div /div/body /html3总结 写一个类继承forms.Form在类中写属性和方法 属性和我们要校验或者自动生成页面的字段一一对应方法对字段进行校验 clean_字段名给单个字段校验clean给多个字段校验在视图函数中使用在模板中使用 form表单中如果定义了button或input类型是submit只要点击就会默认触发form表单的提交如果我们又写了ajax提交就会触发两次从而导致出现问题
http://www.dnsts.com.cn/news/124798.html

相关文章:

  • 龙岗专业做网站公司万表网
  • 手机网站制作多少钱网站管理系统哪个好
  • 做黑网站吗网站备案是什么意思
  • 如何做企业网站优化网站开发与建设主要干什么
  • 太仓住房和城乡建设局网站网站建设主要步骤
  • 网站备案简单吗外贸企业网站源码
  • 有没有好网站推荐wordpress主题开发难吗
  • 游戏网站做代理大型网站团队人数
  • 刷数据网站怎么推广重庆市建设考试报名网站
  • 做内部优惠券网站赚钱吗wordpress 100w 数据
  • 潍坊网站建设工作外贸进出口代理公司
  • 安做省民改厅网站网站备案账号是什么样的
  • 有实力高端网站设计地址公司的网站
  • 无锡网站维护开发游戏软件赚钱吗
  • 湘潭网站设计外包服务装饰公司东莞网站建设
  • 怎么去推广一个网站常见的静态网站开发技术
  • 现在做网站怎么赚钱购物网站建设策划报告
  • 高端网站开发程域名怎么绑定网站
  • 锦州网站建设推广万峰科技著.asp.net网站开发四酷全书电子工业出版社
  • 企业宣传网站公司免费制作个人简历的网站
  • 广州网站建设 骏域网站建设专家清远市企业网站seo
  • 建设网站可选择的方案西部网站管理助手4.0
  • 公司网站被侵权上海网站关键词优化
  • 学做网站书籍东莞网络科技营销
  • 英语网站建设策划书东莞计算机培训机构哪个最好
  • 中山市城乡住房建设局网站网站备案个人好还是企业好
  • 虚拟商城网站搭建google chrome官网下载
  • 手机网页设计制作网站wordpress禁止访问后台
  • 科研网站怎么建设网站建设资料总结
  • 游戏网站做代理汽车网站建设策划方案