import datetime
from django.shortcuts import redirect, render
import json
from django.contrib import messages
from django.contrib.auth.models import User
from django.http import HttpResponse
from lmsApp import models, forms
from django.db.models import Q
from django.contrib.auth import authenticate, login, logout, update_session_auth_hash
from django.contrib.auth.decorators import login_required
def context_data(request):
fullpath = request.get_full_path()
abs_uri = request.build_absolute_uri()
abs_uri = abs_uri.split(fullpath)[0]
context = {
'system_host' : abs_uri,
'page_name' : '',
'page_title' : '',
'system_name' : 'Library Managament System',
'topbar' : True,
'footer' : True,
}
return context
def userregister(request):
context = context_data(request)
context['topbar'] = False
context['footer'] = False
context['page_title'] = "User Registration"
if request.user.is_authenticated:
return redirect("home-page")
return render(request, 'register.html', context)
def save_register(request):
resp={'status':'failed', 'msg':''}
if not request.method == 'POST':
resp['msg'] = "No data has been sent on this request"
else:
form = forms.SaveUser(request.POST)
if form.is_valid():
form.save()
messages.success(request, "Your Account has been created succesfully")
resp['status'] = 'success'
else:
for field in form:
for error in field.errors:
if resp['msg'] != '':
resp['msg'] += str('<br />')
resp['msg'] += str(f"[{field.name}] {error}.")
return HttpResponse(json.dumps(resp), content_type="application/json")
@login_required
def update_profile(request):
context = context_data(request)
context['page_title'] = 'Update Profile'
user = User.objects.get(id = request.user.id)
if not request.method == 'POST':
form = forms.UpdateProfile(instance=user)
context['form'] = form
print(form)
else:
form = forms.UpdateProfile(request.POST, instance=user)
if form.is_valid():
form.save()
messages.success(request, "Profile has been updated")
return redirect("profile-page")
else:
context['form'] = form
return render(request, 'manage_profile.html',context)
@login_required
def update_password(request):
context =context_data(request)
context['page_title'] = "Update Password"
if request.method == 'POST':
form = forms.UpdatePasswords(user = request.user, data= request.POST)
if form.is_valid():
form.save()
messages.success(request,"Your Account Password has been updated successfully")
update_session_auth_hash(request, form.user)
return redirect("profile-page")
else:
context['form'] = form
else:
form = forms.UpdatePasswords(request.POST)
context['form'] = form
return render(request,'update_password.html',context)
# Create your views here.
def login_page(request):
context = context_data(request)
context['topbar'] = False
context['footer'] = False
context['page_name'] = 'login'
context['page_title'] = 'Login'
return render(request, 'login.html', context)
def login_user(request):
logout(request)
resp = {"status":'failed','msg':''}
username = ''
password = ''
if request.POST:
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
resp['status']='success'
else:
resp['msg'] = "Incorrect username or password"
else:
resp['msg'] = "Incorrect username or password"
return HttpResponse(json.dumps(resp),content_type='application/json')
@login_required
def home(request):
context = context_data(request)
context['page'] = 'home'
context['page_title'] = 'Home'
context['categories'] = models.Category.objects.filter(delete_flag = 0, status = 1).all().count()
context['sub_categories'] = models.SubCategory.objects.filter(delete_flag = 0, status = 1).all().count()
context['students'] = models.Students.objects.filter(delete_flag = 0, status = 1).all().count()
context['books'] = models.Students.objects.filter(delete_flag = 0, status = 1).all().count()
context['pending'] = models.Borrow.objects.filter(status = 1).all().count()
context['pending'] = models.Borrow.objects.filter(status = 1).all().count()
context['transactions'] = models.Borrow.objects.all().count()
return render(request, 'home.html', context)
def logout_user(request):
logout(request)
return redirect('login-page')
@login_required
def profile(request):
context = context_data(request)
context['page'] = 'profile'
context['page_title'] = "Profile"
return render(request,'profile.html', context)
@login_required
def users(request):
context = context_data(request)
context['page'] = 'users'
context['page_title'] = "User List"
context['users'] = User.objects.exclude(pk=request.user.pk).filter(is_superuser = False).all()
return render(request, 'users.html', context)
@login_required
def save_user(request):
resp = { 'status': 'failed', 'msg' : '' }
if request.method == 'POST':
post = request.POST
if not post['id'] == '':
user = User.objects.get(id = post['id'])
form = forms.UpdateUser(request.POST, instance=user)
else:
form = forms.SaveUser(request.POST)
if form.is_valid():
form.save()
if post['id'] == '':
messages.success(request, "User has been saved successfully.")
else:
messages.success(request, "User has been updated successfully.")
resp['status'] = 'success'
else:
for field in form:
for error in field.errors:
if not resp['msg'] == '':
resp['msg'] += str('<br/>')
resp['msg'] += str(f'[{field.name}] {error}')
else:
resp['msg'] = "There's no data sent on the request"
return HttpResponse(json.dumps(resp), content_type="application/json")
@login_required
def manage_user(request, pk = None):
context = context_data(request)
context['page'] = 'manage_user'
context['page_title'] = 'Manage User'
if pk is None:
context['user'] = {}
else:
context['user'] = User.objects.get(id=pk)
return render(request, 'manage_user.html', context)
@login_required
def delete_user(request, pk = None):
resp = { 'status' : 'failed', 'msg':''}
if pk is None:
resp['msg'] = 'User ID is invalid'
else:
try:
User.objects.filter(pk = pk).delete()
messages.success(request, "User has been deleted successfully.")
resp['status'] = 'success'
except:
resp['msg'] = "Deleting User Failed"
return HttpResponse(json.dumps(resp), content_type="application/json")
@login_required
def category(request):
context = context_data(request)
context['page'] = 'category'
context['page_title'] = "Category List"
context['category'] = models.Category.objects.filter(delete_flag = 0).all()
return render(request, 'category.html', context)
@login_required
def save_category(request):
resp = { 'status': 'failed', 'msg' : '' }
if reques
没有合适的资源?快使用搜索试试~ 我知道了~
Python中的图书管理系统使用Django源代码.zip
共328个文件
js:186个
pyc:31个
html:25个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 10 浏览量
2022-06-29
00:56:25
上传
评论
收藏 2.87MB ZIP 举报
温馨提示
Python中的图书管理系统使用Django源代码
资源推荐
资源详情
资源评论
收起资源包目录
Python中的图书管理系统使用Django源代码.zip (328个子文件)
bootstrap.css 201KB
bootstrap.rtl.css 200KB
bootstrap.rtl.min.css 160KB
bootstrap.min.css 160KB
bootstrap-grid.rtl.css 71KB
bootstrap-grid.css 71KB
bootstrap-utilities.css 70KB
bootstrap-utilities.rtl.css 70KB
bootstrap-utilities.min.css 52KB
bootstrap-utilities.rtl.min.css 52KB
bootstrap-grid.rtl.min.css 52KB
bootstrap-grid.min.css 52KB
select2.css 18KB
select2.min.css 16KB
datatables.css 9KB
datatables.min.css 8KB
bootstrap-reboot.css 7KB
bootstrap-reboot.rtl.css 7KB
bootstrap-reboot.rtl.min.css 6KB
bootstrap-reboot.min.css 6KB
style.css 2KB
base.html 13KB
per_group.html 9KB
borrows.html 7KB
sub_category.html 7KB
books.html 7KB
manage_student.html 7KB
category.html 7KB
manage_borrow.html 6KB
students.html 6KB
home.html 6KB
manage_book.html 6KB
users.html 5KB
login.html 5KB
topNavigation.html 4KB
manage_sub_category.html 4KB
manage_profile.html 4KB
view_borrow.html 4KB
manage_user.html 4KB
manage_category.html 3KB
profile.html 2KB
update_password.html 2KB
view_book.html 2KB
view_student.html 1KB
view_sub_category.html 1010B
view_category.html 906B
wallpaper.jpg 507KB
bg1.jpg 168KB
logo.jpg 9KB
avatar.jpg 8KB
instascan.min.js 1.49MB
datatables.js 447KB
bootstrap.bundle.js 205KB
select2.full.js 163KB
select2.js 153KB
bootstrap.js 145KB
bootstrap.esm.js 136KB
jquery-3.6.0.min.js 128KB
datatables.min.js 91KB
bootstrap.bundle.min.js 76KB
select2.full.min.js 75KB
select2.min.js 71KB
bootstrap.esm.min.js 71KB
bootstrap.min.js 58KB
popper.min.js 26KB
diacritics.js 16KB
core.js 15KB
results.js 14KB
defaults.js 11KB
utils.js 9KB
attachBody.js 7KB
search.js 7KB
select.js 6KB
base.js 5KB
options.js 4KB
multiple.js 4KB
allowClear.js 3KB
search.js 3KB
ajax.js 3KB
tokenizer.js 3KB
single.js 3KB
tags.js 3KB
infiniteScroll.js 2KB
array.js 2KB
sk.js 2KB
te.js 2KB
pa.js 2KB
cs.js 2KB
ne.js 2KB
ru.js 2KB
bn.js 2KB
hsb.js 2KB
dsb.js 2KB
sr-Cyrl.js 1KB
el.js 1KB
placeholder.js 1KB
jquery.select2.js 1KB
uk.js 1KB
lt.js 1KB
sr.js 1KB
共 328 条
- 1
- 2
- 3
- 4
资源评论
卷积神经网络
- 粉丝: 339
- 资源: 8460
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功