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

天猫官方网站做网站前端要会什么

天猫官方网站,做网站前端要会什么,艺术字体,wordpress怎么加标题需求分析#xff1a; 实现网站搭建的过程#xff1a;首先进行网站的需求性分析 网站可分为前台系统和后台系统#xff0c;由不同的功能拆分为不同的模块 如下是一个电商网站可以拆分出的模块#xff1a; 在编写代码前#xff0c;我们要先对网站进行架构#xff0c;通过…需求分析 实现网站搭建的过程首先进行网站的需求性分析 网站可分为前台系统和后台系统由不同的功能拆分为不同的模块 如下是一个电商网站可以拆分出的模块 在编写代码前我们要先对网站进行架构通过分层设计网站的不同组件软件开发人员可以选择修改和添加应用层而非全局作出更改 如下是经典的三层结构 接入层提供静态内容的web前端服务器和部分动态缓存内容。 逻辑层生成动态内容的应用服务器。 存储层提供数据存储的服务器 TIPS: 为什么之前在用Django的时候直接runserver就好了呢因为Django的开发服务器runserver是一个轻量级服务器能够处理HTTP请求和提供静态资源服务但主要应用于调试阶段由于单线程且没有负载均衡SSL加密等功能在生产环境中我们需要专业的接入层像是Nginx 模块引入 为了确保功能的实现我们可以引入所需的功能模块 其中installed_app这个设置告诉用户在该项目中安装了哪些程序可以是第三方或自定义的也可以是django自带的 middleware这个设置定义了处理请求的中间件和响应件中间件是处理请求和响应的钩子可用于请求到达视图/响应返回客户段前执行特定的操作。 在构建网站的过程中我们要把不同需求拆解为功能模块的同时为其添加数据库表结构 首先我们来进行用户模块的构建 INSTALLED_APPS [# 其他已安装的应用...django.contrib.auth,  # 用户验证框架和模型django.contrib.contenttypes,  # 权限管理]MIDDLEWARE [# 其他中间件...django.contrib.sessions.middleware.SessionMiddleware,  # 会话管理系统django.contrib.auth.middleware.AuthenticationMiddleware,  # 用户验证模型] 这是利用了Django自带的用户模块配置当中的.就是/的意思暗含代码路径在django/contrib/auth/moddles.py模型里面包含这些内容 让我们先来了解一下用户模块 django.contrib.auth 模块为我们提供了用户认证系统的核心功能包括用户模型、表单、视图、URL 配置等这些功能已经预先定义好可以直接使用或根据需要进行扩展。它是一个完整的用户认证框架旨在帮助开发者快速实现用户注册、登录、权限管理等功能而无需从头开始编写这些代码。 Django 自带用户认证模块提供的功能 以下是 Django 自带用户认证模块django.contrib.auth为你预先定义好的内容 ---- 1. 用户模型User Django 提供了一个默认的用户模型 User定义在 django.contrib.auth.models 中。它包含以下字段 •  username用户名 •  password密码加密存储 •  email邮箱 •  first_name 和 last_name用户姓名 •  is_active是否激活 •  is_staff是否是管理员 •  is_superuser是否是超级用户 •  groups 和 user_permissions用户组和权限 你可以直接使用这个默认的用户模型或者通过继承 AbstractUser 或 AbstractBaseUser 来扩展它。 ---- 2. 表单forms Django 提供了一些内置的表单类用于用户注册、登录、密码修改等功能 •  UserCreationForm用户注册表单 •  AuthenticationForm用户登录表单 •  PasswordChangeForm密码修改表单 •  SetPasswordForm设置密码表单 •  PasswordResetForm密码重置表单 这些表单类已经预定义了字段和验证逻辑你可以直接使用也可以通过继承它们来自定义字段或验证规则。 ---- 3. 视图views Django 提供了一些内置的视图函数用于处理用户认证相关的操作 •  login用户登录 •  logout用户登出 •  password_change密码修改 •  password_reset密码重置 •  password_reset_done密码重置完成 •  password_reset_confirm密码重置确认 •  password_reset_complete密码重置完成提示 这些视图函数可以直接在 URL 配置中使用或者通过继承 View 类来自定义视图逻辑。 ---- 4. URL 配置urls Django 提供了一个 auth 应用的 URL 配置模块 django.contrib.auth.urls它包含了用户认证相关的 URL 路由例如 from django.contrib.auth import views as auth_viewsurlpatterns [path(login/, auth_views.LoginView.as_view(), namelogin),path(logout/, auth_views.LogoutView.as_view(), namelogout),path(password_change/, auth_views.PasswordChangeView.as_view(), namepassword_change),path(password_change/done/, auth_views.PasswordChangeDoneView.as_view(), namepassword_change_done),path(password_reset/, auth_views.PasswordResetView.as_view(), namepassword_reset),path(password_reset/done/, auth_views.PasswordResetDoneView.as_view(), namepassword_reset_done),path(reset/uidb64/token/, auth_views.PasswordResetConfirmView.as_view(), namepassword_reset_confirm),path(reset/done/, auth_views.PasswordResetCompleteView.as_view(), namepassword_reset_complete),]你可以直接在项目的 urls.py 文件中包含这些 URL 路由或者根据需要自定义 URL 路径和视图参数。 ---- 5. 中间件和会话管理 Django 的认证系统还提供了中间件如 AuthenticationMiddleware和会话管理功能用于在请求中自动处理用户认证信息并将用户对象绑定到 request.user。 ---- 扩展 在很多时候我们都需要对Django自带的模型进行相应的拓展 关联表 这个时候可以使用关联表 用如下的onetoonefield方法创建 from django.db import modelsfrom django.contrib.auth.models import Userclass Profile(models.Model):GENDER_CHOICES ((M, Male),  # 男性(F, Female),  # 女性)user models.OneToOneField(User, on_deletemodels.CASCADE)gender models.CharField(max_length1, choicesGENDER_CHOICES)  # 性别birth_date models.DateField(nullTrue, blankTrue)  # 出生日期 模型字段解释 1.  GENDER_CHOICES: •  这是一个元组列表用于定义性别字段的选项。每个元组包含两个元素第一个是存储在数据库中的值第二个是显示给用户的值。 2.  user: •  这是一个 OneToOneField 字段它建立了 Profile 模型和 User 模型之间的一对一关系。 •  User 是 Django 内置的用户模型通常包含用户名、密码、电子邮件等基本信息。 •  on_deletemodels.CASCADE 参数指定了当关联的 User 实例被删除时相关的 Profile 实例也会被级联删除。 3.  gender: •  这是一个 CharField 字段用于存储用户的性别。 •  max_length1 指定了性别字段的最大长度为1个字符。 •  choicesGENDER_CHOICES 参数将性别字段的值限制为在 GENDER_CHOICES 中定义的选项。 4.  birth_date: •  这是一个 DateField 字段用于存储用户的出生日期。 •  nullTrue 允许该字段在数据库中存储为 NULL这意味着它可以为空。 •  blankTrue 允许在 Django 管理后台或表单中不填写该字段。 关联表的使用 在 Django 中当你使用 OneToOneField 时Django 会在数据库中创建一个新的表来存储 Profile 模型的数据。这个表会包含一个额外的字段通常是 user_id这个字段是一个外键指向 User 表的主键。 例如如果你的 User 表的主键是 id那么 Profile 表可能会包含以下字段 •  idProfile 表的主键。 •  user_id外键指向 User 表的 id 字段。 •  gender存储性别的字段。 •  birth_date存储出生日期的字段。 这种设计允许每个 User 实例都有一个对应的 Profile 实例而每个 Profile 实例只能属于一个 User 实例。这种一对一的关系在数据库中通过外键约束来实现确保了数据的一致性和完整性。 总结 这段代码通过 OneToOneField 创建了一个 Profile 模型它与 User 模型建立了一对一的关系。这种关系通过在 Profile 表中添加一个外键字段来实现该字段指向 User 表的主键。这种设计使得每个用户都有一个相关的个人资料而每个个人资料只属于一个用户。 信号定义 在创建用户过程中多次会用到创建用户的代码为了避免重复创建我们将定义一个信号在创建用户时自动创建档案 from django.apps import AppConfigclass MyAppConfig(AppConfig):name myappdef ready(self):import myapp.signals 该方法使用要在myapp下创建一个signals.py文件并且在app.py文件当中重写ready方法来连接信号以及更新installed_apps INSTALLED_APPS [...myapp.apps.MyAppConfig,...] TIPS:当然signals的内容也可以直接写在models里面 然后我们在更改完models之后再去更改视图和模版文件 模板 h2{{ user.get_full_name }}/h2ulliUsername: {{ user.username }}/li  !-- 显示用户名 --liLocation: {{ user.profile.gender }}/li  !-- 显示性别 --liBirth Date: {{ user.profile.birth_date }}/li  !-- 显示出生日期 --/ul 视图 def update_profile(request, user_id):user User.objects.get(pkuser_id)  # 获取用户对象user.profile.gender M  # 设置性别user.save()  # 保存 视图函数当中反应的是对于用户档案的更新在更新用户档案时浏览器会先上传一个表单然后由服务器来处理这个表单处理的方法就是视图函数当中的先获取数据对象调用先前定义的模型进行修改然后再调用save方法进行更新 注意这里储存的是模型的字段因此不能直接储存到数据库我们需要使用forms.ModelForm类创建表单 from django import formsclass UserForm(forms.ModelForm):class Meta:model User  # 关联User模型fields (first_name, last_name, email)  # 表单字段class ProfileForm(forms.ModelForm):class Meta:model Profile  # 关联Profile模型fields (url, gender, birth_date)  # 表单字段 然后再编写对应用户登陆的视图 from django.contrib import messagesfrom django.shortcuts import redirect, renderfrom django.db import transactionfrom .forms import UserForm, ProfileFormlogin_required  # 验证登录transaction.atomicdef update_profile(request):if request.method POST:  # POST请求user_form UserForm(request.POST, instancerequest.user)  # 获取用户表单信息profile_form ProfileForm(request.POST, instancerequest.user.profile)  # 获取表单信息if user_form.is_valid() and profile_form.is_valid():  # 验证通过则保存信息user_form.save()profile_form.save()messages.success(request, _(Your profile was successfully updated!))return redirect(settings:profile)else:  # 验证不通过则显示错误信息messages.error(request, _(Please correct the error below.))else:  # 其他请求一般是GET请求user_form UserForm(instancerequest.user)profile_form ProfileForm(instancerequest.user.profile)# 返回表单页面return render(request, profiles/profile.html, {user_form: user_form,profile_form: profile_form})如上代码当中用户如果用的是post方法则获取表单信息与之对照如果是get方式则返回表单页面并将内容填入表单(对应的我们需要更改其模版文件) form methodpost{% csrf_token %}{{ user_form.as_p }}  !-- 渲染用户表单 --{{ profile_form.as_p }}  !-- 渲染Profile表单 --button typesubmitSave changes/button  !-- 提交按钮 --/form 继承 如果我们的用户系统完全不需要某一字段也可以使用继承的方式AbstractBaseUser from __future__ import unicode_literalsfrom django.db import modelsfrom django.core.mail import send_mailfrom django.contrib.auth.models import PermissionsMixinfrom django.contrib.auth.base_user import AbstractBaseUserfrom django.utils.translation import ugettext_lazy as _from .managers import UserManagerclass User(AbstractBaseUser, PermissionsMixin):GENDER_CHOICES ((M, Male),  # 男性(F, Female),  # 女性)gender models.CharField(max_length1, choicesGENDER_CHOICES)  # 性别birth_date models.DateField(nullTrue, blankTrue)  # 出生年月email models.EmailField(_(email address), uniqueTrue)  # 电子邮件first_name models.CharField(_(first name), max_length30, blankTrue)last_name models.CharField(_(last name), max_length30, blankTrue)date_joined models.DateTimeField(_(date joined), auto_now_addTrue)  # 注册时间is_active models.BooleanField(_(active), defaultTrue)  # 是否活跃avatar models.ImageField(upload_toavatars/, nullTrue, blankTrue)  # 用户头像objects UserManager()USERNAME_FIELD emailREQUIRED_FIELDS []class Meta:verbose_name _(user)verbose_name_plural _(users)def get_full_name(self):  # 获取用户全名full_name %s %s % (self.first_name, self.last_name)return full_name.strip()def get_short_name(self):return self.first_namedef email_user(self, subject, message, from_emailNone, **kwargs):  # 向用户发送电子邮件send_mail(subject, message, from_email, [self.email], **kwargs) 在使用继承AbstractBaseUser时有很多相关的限制(建议直接重新自己写) 如果要添加某一些字段可以采用继承AbstractUser方法运营此法可对于原有的类进行更改 from django.db import modelsfrom django.contrib.auth.models import AbstractUserclass User(AbstractUser):GENDER_CHOICES ((M, Male),  # 男性(F, Female),  # 女性)gender models.CharField(max_length1, choicesGENDER_CHOICES)  # 性别birth_date models.DateField(nullTrue, blankTrue)  # 出生年月 模块设计的大概步骤 然后我们再来进行商品库模块的设计 首先我们设计了类别模型、商品模型以及类别和商品的多对多的模型 from django.db import modelsclass Category(models.Model):name models.CharField(Name, max_length255, db_indexTrue)  # 类别名称description models.TextField(Description, blankTrue)  # 类别描述products models.ManyToManyField(Product)  # 多对多关系class Product(models.Model):title models.CharField(Title)  # 商品名称description models.TextField(Description, blankTrue)  # 商品描述attributes models.TextField(Attribute, blankTrue)  # 商品附属信息date_created models.DateTimeField()  # 商品创建时间 在上述代码中可以把manytomany理解为一个声明表示两个表要建联而ProductCategory则可以视作声明的具体内容 from django.http import HttpResponsefrom .models import Product, Categorydef get_product_detail(request, product_id):  # 获取商品详情return Product.objects.get(pkproduct_id)def get_all_products(request, category_id):  # 通过类别获取商品列表return Category.objects.get(pkcategory_id).products.all() 定义相应的视图函数根据搜索返回商品的过程实际搜索当中要比这复杂的多因为用户的描述和实际商品的名称并非完全相同此时也要给出最合理的结果 {% for product in productions %}p{{ product.title }}/p  !-- 商品的名称 --p{{ product.description }}/p  !-- 商品的描述 --{% endfor %} 并给出相应的模版文件这里用了for标签来渲染列表 总结 总之网站的制作就是先进行需求分析根据需求分析得到各个功能模块然后对每一个模块进行编写编写的顺序为模型文件再到视图函数及其对应的模版文件urls.py和settings.py的两个视图函数的编写可以放在这一步之前也可以是之后但是为了方便编写settings.py之前我们最好还是要明确自己要用到的所有models和middleware
http://www.w-s-a.com/news/617136/

相关文章:

  • 东莞网站建设咨询公江西网站建设平台
  • 什么是网站功能源码下载站
  • 石家庄制作网站的公司双柏县住房和城乡建设局网站
  • 影视vip网站建设教程ppt模板免费下载 素材红色
  • 内蒙古城乡建设部网站首页平台网站建设ppt
  • 集约化网站建设项目官方网站建设
  • 原创先锋 北京网站建设网站开发电脑内存要多少
  • 婚恋网站建设项目创业计划书网站建设 食品
  • 免费建网站代码查询做导员的网站
  • 做网站的软件电子可以看女人不易做网站
  • 学校响应式网站模板下载仙居住房和城乡建设规划局网站
  • 推广网站的方法有拍卖网站建设
  • 网站建设网站排名优化中国网站服务器哪个好
  • asp网站应用程序网站建设需要提供的资料
  • 网站开发与设计.net微信小程序设计制作
  • 怎样做网站排名优化展馆设计费取费标准一览表
  • 网站建设去哪可接单网站建设与设计大作业
  • 休闲咖啡厅网站开发目标韩国小清新网站模板
  • 做微景观的网站制作网页模板适应不同分辨率
  • 最简单的网站系统昨天军事新闻最新消息
  • 做ps网页设计的网站有哪些wordpress内容付费
  • 有没有免费注册域名的网站科技小制作 手工 简单
  • 网站支付端口win10优化大师怎么样
  • 怎么做云购网站吗网站流量监测
  • 网站被恶意刷流量可以翻外墙的浏览器
  • 网站做直链下载存储解决方案怎么把网站设置为主页面
  • 西安做网站招聘深圳网站见
  • 网站怎么做优化百度能搜索到wordpress 子分类
  • 六安网站建设培训制作网站需要多少时间
  • 电子商务专业网站建设什么软件可以做动画视频网站