基于Python的乡村政务办公系统

作者主页:IT毕设梦工厂✨
个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。
☑文末获取源码☑
精彩专栏推荐⬇⬇⬇
Java项目
Python项目
安卓项目
微信小程序项目

一、开发环境

  • 开发语言:Python
  • 数据库:MySQL
  • 系统架构:B/S
  • 后端:Django
  • 前端:Vue

二、系统功能模块

  • 角色:用户、管理员
  • 功能:
    用户
    常用资料、举报处理、论坛交流、公共文化、村民举报;
    管理员
    用户管理、常用资料管理、举报材料管理、村民举报管理、论坛管理、公共文化管理。

三、系统界面展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、部分代码设计

#密码加密
def hash_code(s, salt='student_system'):
    h = hashlib.sha256()
    s += salt
    h.update(s.encode())
    return h.hexdigest()

#创建用户组,并添加权限
def create_group():
    #组不存在则创建组
    if not (Group.objects.filter(name="teacher").exists()):
        group_teacher=Group.objects.create(name="teacher")
        #从auth_permission表中添加权限到auth_group_permission表中
        for p in per_teacher_list:
            permission = Permission.objects.get(codename=p)
            group_teacher.permissions.add(permission)
        group_teacher.save()

    if not (Group.objects.filter(name="student").exists()):
        group_student=Group.objects.create(name="student")
        for p in per_student_list:
            permission = Permission.objects.get(codename=p)
            group_student.permissions.add(permission)
        group_student.save()

    if not (Group.objects.filter(name="admin").exists()):
        group_admin = Group.objects.create(name="admin")
        for p in per_admin_list:
            permission = Permission.objects.get(codename=p)
            group_admin.permissions.add(permission)
        group_admin.save()

def index(request):
    create_group()
    #login_form = UserForm()
    #return render(request, 'login/login.html',{"login_form": login_form})
    captcha = CaptchaForm()
    return render(request, 'login/login.html', {"captcha_form": captcha})


# 登录视图
@csrf_exempt
def login(request):
    if request.method == "POST":
        captcha_form = CaptchaForm(request.POST)
        message = ""
        if captcha_form.is_valid():
            username = request.POST.get('userid')
            password = request.POST.get('userpwd')
            try:
                user = Users.objects.get(username=username)
                if user.password == hash_code(password):
                    auth.login(request,user) #进行登录操作,这样django才能记住当前的登录用户,以便接下来对该用户的登录状态和权限进行判断
                    request.session['is_login'] = True
                    request.session['user_id'] = user.id
                    request.session['user_name'] = user.username
                    request.session.set_expiry(0) #设置session的有效期为:退出浏览器就失效
                    user.set_visit_num()#更新访问量
                    return render(request, 'login/index.html')
                else:
                    message = "密码不正确"
            except Users.DoesNotExist:
                message = "用户不存在!"
        return render(request, 'login/login.html', {"message": message, "captcha_form": captcha_form})
    return redirect('/index/')


# 注册视图
def register(request):
    if request.method == "POST":
        register_form = RegisterForm(request.POST)
        message = "请检查填写的内容!"
        if register_form.is_valid():  # 获取数据
            username = register_form.cleaned_data['username']
            password1 = register_form.cleaned_data['password1']
            password2 = register_form.cleaned_data['password2']
            email = register_form.cleaned_data['email']
            sex = register_form.cleaned_data['sex']
            utype = register_form.cleaned_data['usertype']
            if password1 != password2:  # 判断两次密码是否相同
                message = "两次输入的密码不同!"
            else:
                same_name_user = Users.objects.filter(username=username)
                if same_name_user:  # 用户名唯一
                    message = '用户已经存在,请重新选择用户名!'
                    return render(request, 'login/register.html', {"message": message, "register_form": register_form})
                same_email_user = Users.objects.filter(email=email)
                if same_email_user:  # 邮箱地址唯一
                    message = '该邮箱地址已被注册,请使用别的邮箱!'
                    return render(request, 'login/register.html', {"message": message, "register_form": register_form})
                # 当一切都OK的情况下,创建新用户
                new_user = Users.objects.create()
                new_user.username = username
                new_user.password = hash_code(password1)
                new_user.email = email
                new_user.sex = sex
                new_user.usertype = utype
                if utype =='1':
                    group_teacher=Group.objects.filter(name="teacher").first()
                    group_teacher.user_set.add(new_user)
                if utype =='2':
                    group_student=Group.objects.filter(name="student").first()
                    group_student.user_set.add(new_user)
                if utype =='3':
                    group_admin=Group.objects.filter(name="admin").first()
                    group_admin.user_set.add(new_user)
                new_user.save()
                return redirect('/index/')  # 自动跳转到登录页面
        return render(request, 'login/register.html', {"message": message, "register_form": register_form})
    register_form = RegisterForm()
    return render(request, 'login/register.html', {"register_form": register_form})


# 注销视图
def logout(request):
    if not request.session.get('is_login', None):
        # 如果本来就未登录,也就没有注销一说
        return redirect("/index/")
    auth.logout(request)
    request.session.flush()
    return redirect('/index/')
# 或者使用下面的方法
    # del request.session['is_login']
    # del request.session['user_id']
    # del request.session['user_name']

@login_required(login_url='/loginurl/')
def changepassword(request):
    if request.method =="POST":
        changepassword_form = ChangepasswordForm(request.POST)
        message = ""
        if changepassword_form.is_valid():
            password = changepassword_form.cleaned_data['password']
            password1 = changepassword_form.cleaned_data['password1']
            password2 =changepassword_form.cleaned_data['password2']
            if password1 != password2:  # 判断两次密码是否相同
                message = "两次输入的密码不同!"
            else:
                user = Users.objects.filter(username= request.session['user_name'])
                if hash_code(password) != user.first().password:
                     message = "原密码错误!"
                else:
                    user.update(password=hash_code(password1))
                    return redirect('/index/')  # 自动跳转到登录页面
        return render(request,'login/changepassword.html',{"message":message, "changepassword_form":changepassword_form})
    changepassword_form = ChangepasswordForm()
    return render(request,'login/changepassword.html',{"changepassword_form":changepassword_form})

@login_required(login_url='/loginurl/')
def changeimage(request):
    if request.method == "POST":
        changeimage_form = ChangeimageForm(request.POST,request.FILES)
        if changeimage_form.is_valid():
            image = changeimage_form.cleaned_data['image']
            user = request.user
            user.image = image
            user.save()
            return HttpResponseRedirect(reverse('AppLogin:index'))
    else:
        changeimage_form = ChangeimageForm()
        return render(request,'login/changeuserimage.html',{'form':changeimage_form})

#用户没有登录后要跳转的页面
def loginurl(request):
    return render(request,'login/loginurl.html')

#用户没有权限后要跳转的页面
def nopermisson(request):
    return render(request,'login/nopermission.html')

五、论文参考

在这里插入图片描述

六、系统视频

基于Python的乡村政务办公系统

结语

大家可以帮忙点赞、收藏、关注、评论啦~
源码获取:私信我

精彩专栏推荐⬇⬇⬇
Java项目
Python项目
安卓项目
微信小程序项目

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值