Django建立一个音乐网站(四)

news/2024/5/9 8:57:21/文章来源:https://blog.csdn.net/skrskr66/article/details/88793750

之前将网站一些该有的元素都准备完成了。接下来就是关于用户注册和后台admin设置。

user模块

关于一个网站的浏览量是靠用户的数量来决定的。所以每一个用户在网站的操作,要做出限制。这个是可以实现的。接着还有一些个人的账号和数据信息可以完善,让管理员能更好的管理。

#user的urls模块from django.urls import path
from . import viewsurlpatterns = [#用户的注册和登陆path('login.html', views.loginView, name='login'),#用户登录中心path('home/<int:page>.html', views.homeView, name='home'),#退出用户登陆path('logout.html', views.logoutView, name='logout'),
]#两个html文件已经放到之前的文件下载中------------------------------------------------------------------------------------------------
#user的models模块from django.db import models
from django.contrib.auth.models import AbstractUserclass MyUser(AbstractUser):qq = models.CharField('QQ号码', max_length=20)weChat = models.CharField('微信账号', max_length=20)mobile = models.CharField('手机账号', max_length=11, unique=True)#设置返回值def __str__(self):return self.username#这里与之前数据库的建立连接是一个意思,此时需要将之前库内所有表删除(建议先导出数据保存),在将这个执行
#python manage.py makemigrations和python manage.py migrate 两个指令操作------------------------------------------------------------------------------------------------
#user的forms模块
from django.contrib.auth.forms import UserCreationForm
from .models import MyUser
from django import forms#定义MyUser的数据表单,用于用户注册
class MyUserCreationForm(UserCreationForm):#重写初始化函数,设置自定义字段password1和password2的样式和属性def __init__(self, *args, **kwargs):super(MyUserCreationForm, self).__init__(*args, **kwargs)self.fields['password1'].widget = forms.PasswordInput(attrs={'class':'txt tabInput', 'placeholder':'密码,4-16位数字/字母。特殊符号(空格除外)'})self.fields['password2'].widget = forms.PasswordInput(attrs={'class':'txt tabInput', 'placeholder':'重复密码'})class Meta(UserCreationForm.Meta):model = MyUser#在注册界面添加模型字段:手机号码和密码fields = UserCreationForm.Meta.fields + ('mobile',)#设置模型字段的样式和属性(widgets)widgets = {'mobile':forms.widgets.TextInput(attrs={'class':'txt tabInput','placeholder':'手机号'}),'username':forms.widgets.TextInput(attrs={'class':'txt tabInput','placeholder':'用户名'}),}#实现用户的注册和登陆之前,除了自定义用户模型MyUser之外,还需要定义用户注册的表单类。#这里通过重写Django中的内置表单类UserCreationForm------------------------------------------------------------------------------------------------
#user的views模块
from django.shortcuts import render, redirect
from django.db.models import Q
from index.models import Dynamic
from user.models import *
from django.contrib.auth import login, logout
from django.contrib.auth.hashers import check_password
from .form import MyUserCreationForm
from django.contrib.auth.decorators import login_required
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger#用户注册与登录
def loginView(request):#表单对象useruser = MyUserCreationForm()#表单提交if request.method == 'POST':#判断表单提交是     用户登陆     还是       用户注册#用户登陆if request.POST.get('loginUser', ''):#获取搜索内容如果为loginUser,没有返回空loginUser = request.POST.get('loginUser', '')#这里是已经获取到用户输入的password = request.POST.get('password', '')if MyUser.objects.filter(Q(mobile = loginUser) | Q(username=loginUser)):user = MyUser.objects.filter(Q(mobile=loginUser) | Q(username=loginUser)).first()#这里是sql语句在django中的不同表示方法if check_password(password, user.password):login(request, user)return redirect('/user/home/1.html')#页面跳转else:tips = '密码错误'else:tips = '用户不存在'#用户注册else:user = MyUserCreationForm(request.POST)if user.is_valid():user.save()tips = '注册成功'else:if user.errors.get('username', ''):tips = user.errors.get('username', '注册失败')else:tips = user.errors.get('mobile', '注册失败')return render(request, 'login.html', locals())#用户中心
#设置用户登录限制
@login_required(login_url='/user/login.html')
def homeView(request, page):#热搜歌曲search_song = Dynamic.objects.select_related('song').order_by('-dynamic_search').all()[:4]#分页功能song_info = request.session.get('play_list', [])paginator = Paginator(song_info, 3)try:#错误解决方法contacts = paginator.page(page)except PageNotAnInteger:contacts = paginator.page(1)except EmptyPage:contacts = paginator.page(paginator.num_pages)return render(request, 'home.html', locals())def logoutView(request):logout(request)return redirect('/')

在上面的代码中涉及到了表单类这么一个概念。

在这里要说明以下,表单是搜集用户数据信息的各种表单元素的集合,作用是实现网页上的数据交互,用户在网站输入数据信息,然后提交到网站服务器端进行处理

表单我们学过html的知道,定义一个类似下拉菜单的样式,在这个项目中是先利用了内置表单类,然后重写了两个新功能。

1、添加用户注册的字段,在Meta类对fields属性设置字段即可,添加的字段必须是模型字段并且以元组或列表的形式添加

2、设置字段的CSS格式,设置表单字段mobile、username、password1、password2的attrs属性。其中mobile和username是模型MyUser的字段,所以在Meta类中重写widgets属性。widgets是内置表单类的一个参数,两个密码password是额外定义的表单字段,所以重写初始函数__init__可以实现字段样式设置

这里对表单说的有点多,因为在网站中,用户注册是一个非常重要的环节。而且表单这里还是涉及到了前端的知识…原谅本小白不才…实在能力有限。

至此除了后台系统之外,基本全部完成。上几个截图看看吧

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接下来就是后台系统了…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_854649.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中小规模网站架构解析

中小规模网站架构组成 1)用户访问网站的人员 2) 防火墙 (firewalld)进行访问策略控制 3) 负载均衡服务器 (nginx)对用户的访问请求进行调度处理 4) web服务器 (nginx)处理用户的请求 5) 数据库服务器 (mysql)存储的字符数据 6) 存储服务器 (nfs)存储图片 音频 视频…

阿里云ECS服务器部署LNMP实现WordPress站点搭建创建自己的博文网站

网址https://developer.aliyun.com/topic/ecs2022 选择网址可获得一个月的体验机会 配置如上图选择立即购买&#xff0c;下一步即可&#xff0c;购买完毕后等待三分钟修改密码&#xff0c;先进入esc工作台&#xff0c;选择实例 修改完密码后等待重启&#xff0c;重启成功可…

扎克伯格13年前写的Facebook网站代码,你见过吗?

2017年的扎克伯格身价狂飙&#xff0c;越来越接近比尔盖茨。 看他在科技界的战绩&#xff0c;总算成为一个没有被代码耽误的商业奇才&#xff01; 那么&#xff0c;扎克伯格的编程水平如何呢&#xff1f; 网友一&#xff1a;扎克伯格一个星期建立了Facebook网站&#xff0c;水平…

2017 年最受欢迎的 11 个编程挑战网站

如果你正在在学习编程&#xff0c;那么我可以告诉你一个提高技能的好方法&#xff0c;那就是敢于去解决编码过程中遇到的难题。解决不同类型的难题&#xff0c;可以帮助你成为一名优秀的问题解决者&#xff1b;不管编程语言多复杂&#xff0c;你也会得心应手&#xff1b;另外在…

毕业生--参考文献查询网站及方法(中文核心及以上)

一、知网 &#xff08;1&#xff09;以我为例&#xff0c;是用校外访问登录&#xff0c;可以免费下载知网文献资源。 &#xff08;2&#xff09;进入新版知网&#xff0c;使用高级检索。 &#xff08;3&#xff09;进行多条件筛选检索。 小提示&#xff1a;全部期刊包括了除核…

有权限的网页能分享内页?_如何做好网站内页的SEO优化?

SEOer们都清楚&#xff0c;企业招聘SEO目的是什么&#xff1f;很简单&#xff0c;获得更多的网站流量&#xff0c;提高流量转换率&#xff0c;最终完成订单交易。然而&#xff0c;许多搜索引擎只专注于优化首页上的几个关键词&#xff0c;而内页上并没有优化的痕迹。只有一个结…

8个获取手机应用程序设计灵感的网站

曾经&#xff0c;CSS 画廊非常流行&#xff0c;网页设计师们会定期访问这些网站获取灵感。现在仍然可以方便迅速找到令人兴奋的东西&#xff08;例如 Dribbble 和 Behance 对设计有很大的帮助&#xff09;。 对于移动应用程序设计&#xff0c;存在类似的画廊&#xff0c;我相信…

带给您灵感的25个最新鲜的 HTML5 网站

感谢 HTML5 带来的惊人的先进特性&#xff0c;在未来几年&#xff0c;HTML5 将会继续发挥巨大的推动作用&#xff0c;不仅是在 Web 应用中&#xff0c;网页设计领域也会有新的变革。今天&#xff0c;我们在这里集合了能够带给您灵感的25个最新鲜的 HTML5 网站。 NeddStereo Cre…

经典网页设计:20个新鲜出炉的 HTML5 网站

经典网页设计系列精彩继续&#xff0c;今天这篇文章向大家展示20新鲜出炉的 HTML5 网站作品&#xff0c;让大家感受一下 HTML5 的魅力。HTML5 新增了许多重要的特性&#xff0c;像 video、audio 和 canvas 等等&#xff0c;这些特性使得能够很容易的网页中包含多媒体内容&#…

神奇的滚动动画,30个视差滚动网站设计

使用 HTML5 和 CSS3&#xff0c;我们能够在浏览器中创建更有趣和更吸引眼球的效果。其中&#xff0c;视差滚动&#xff08;Parallax Scrolling&#xff09;就是这样的效果之一。这种技术通过在网页向下滚动的时候&#xff0c;控制背景的移动速度比前景的移动速度慢来创建出令人…

经典网页设计:使用颜色滤镜效果的20个网站

大的背景图像已经成为了今年网页设计的趋势。在图像排布文本和按钮并很好的搭配相当具有挑战性。因此&#xff0c;设计师使用创意的 Photoshop 滤镜和渐变来在图像上创建一个遮罩&#xff0c;并在其上放置其他的网页设计元素。这种新鲜的设计给网站带来独特的光泽。在此&#x…

HTML5初学者福利!11个在线学习网站推荐

HTML5的强大及流行趋势&#xff0c;让更多的人想要系统的对它进行学习。而大多数人获取HTML5知识的重要途径都是网络&#xff0c;不过面对五花八门的搜索结果&#xff0c;是不是觉得摸不着头脑&#xff0c;无法抉择&#xff1f;在这里&#xff0c;文章作者Abhishek Thakur以自己…

自媒体人必备:国内最专业的自媒体平台导航网站,有它就够了

这个自媒体导航是小编自己搭建的网站&#xff0c;yechuang.top/nav/zimeiti 主要收录了自媒体人常用的网站、工具、书籍。 自媒体人的超级搜索条做为一个资深的收集控&#xff0c;我愿意把自己收集的资源分类整理后免费分享出来 小编在网站上添加了一个超级搜索条&#xff0c;聚…

UI设计网站 | 常用的UI设计网站大集合

好多小伙伴知道的UI设计网站可能也就那么几个&#xff0c;今天给大家整理了一些经常跟新的UI学习网站&#xff0c;每天坚持浏览这些网站&#xff0c;多看大神的作品和文章&#xff0c;可以快速的提升你的UI设计水平&#xff0c;切记&#xff0c;不要只是看&#xff0c;要一边看…

11个LOGO设计灵感网站推荐,帮你提高LOGO设计工作效率

设计LOGO是一件很费脑细胞的活&#xff0c;需要很多的创意灵感&#xff0c;今天给大家把一些专业的LOGO设计网站和LOGO图库整合在一起了&#xff0c;希望大家能多一些灵感创意&#xff0c;能保质保量的完成你的LOGO。 LOGO大师 http://www.logodashi.com LOGO大师网是国内领先的…

产品经理必须知道的PM社区和好用的原型工具网站

我们平常需要用到很多产品经理网站&#xff0c;今天分享一些优秀的产品经理网站&#xff0c;相信可以很好地提高你的工作效率。 好多产品经理或者刚转行的朋友总是在画原型的时候缺乏灵感&#xff0c;或者想找一下可以参考的原型或思路&#xff0c;那小编本期整理了一下产品经…

免费开源的建站程序大全,不会编程也可以自助搭建网站了哦

想建网站又不会编程的小伙伴有福啦&#xff0c;本期推荐一些开源的cms建站程序&#xff0c;不需要写后端的任何逻辑代码&#xff0c;轻轻松松就可以建立自己的网站了&#xff0c;当然&#xff0c;要想网站有自己的个性&#xff0c;模版还是需要自己写的&#xff0c;只需要会简单…

MaterialUp - 寻找材料设计灵感必备的网站

MaterialUp 是一个展示最好的材料设计 APP&#xff0c;网站和概念的地方&#xff0c;每天都会更新。每款设计都精心挑选&#xff0c;展示那些有才华的设计师的伟大工作。 MaterialUp 的核心价值是让尽可能多的设计师提供有价值灵感。 很棒&#xff01;立即去看看

基于Node.JS的六款开源内容管理和静态网站生成系统

在内容管理系统&#xff08;CMS&#xff09;中&#xff0c;豪无疑问目前最流行的是 WordPress。它是一个可靠、 稳定的系统&#xff0c;有一个非常活跃的社区。它能使那些对技术不熟悉或根本不懂技术的人也能搭建网站&#xff0c;不仅局限于博客。它还是一个静态站点生成器。Je…

20+个创意十足的斜线网站设计

大多数传统的网页都是直愣愣的竖直水平的设计。不过现在&#xff0c;斜线网页设计与视差滚动设计&#xff08;译者注&#xff1a;一种特殊的网页形式呈现形式&#xff0c;其基础原理是让多层背景以不同的速度搬动&#xff0c;形成立体的感觉&#xff0c;带来卓越的视觉体验&…