from django.shortcuts import render
from django.http import HttpResponse,HttpResponseRedirect
from user.models import User
from . import models
from .models import Note
from django.core.paginator import Paginator
# Create your views here.files:note/views note/views.py
def check_login(fn):
def wrap(request,*args, **kwargs):
if not hasattr(request, 'session'):
return HttpResponseRedirect('/user/login')
elif 'result' not in request.session:
return HttpResponseRedirect('/user/login')
return fn(request,*args,**kwargs)
return wrap
@check_login
def list_view(request):
#判断两种没有登陆的情况,
# if not hasattr(request,'session'):
# return HttpResponseRedirect('/user/login')
# elif 'result' not in request.session:
# return HttpResponseRedirect('/user/login')
user_id=request.session['result']['id']
auser=User.objects.get(id=user_id)
notes=auser.note_set.all()#反向关系管理器,默认名称是 小写模型名_set(这里是 note_set) 表示:"获取这个用户所有的笔记"
return render(request,'note/showall.html',locals())
@check_login
def list_view_page(request):
#判断两种没有登陆的情况,
# if not hasattr(request,'session'):
# return HttpResponseRedirect('/user/login')
# elif 'result' not in request.session:
# return HttpResponseRedirect('/user/login')
user_id=request.session['result']['id']
auser=User.objects.get(id=user_id)
notes=auser.note_set.all().order_by('-create_time')#反向关系管理器,默认名称是 小写模型名_set(这里是 note_set) 表示:"获取这个用户所有的笔记"
#添加分页功能
paginator=Paginator(notes,5)
cur=request.GET.get('page',1)#得到当前的页码
cur_page=int(cur)
page=paginator.page(cur_page)
return render(request,'note/showall_page.html',locals())
@check_login
def add_views(request):
if request.method=='GET':
return render(request,'note/addnote.html')
elif request.method=='POST':
title=request.POST['title']
content=request.POST['content']
user_id=request.session['result']['id']
auser=User.objects.get(id=user_id)
res=models.Note(user=auser,tilte=title,content=content)
res.save()
return HttpResponseRedirect('/note')
@check_login
def mod_views(request,id):
#得到当前用户的模型对象
user_id=request.session['result']['id']
auser=User.objects.get(id=user_id)
anote=Note.objects.get(user=auser,id=id)
if request.method=='GET':
return render(request,'note/modnote.html',locals())
elif request.method=='POST':
tilte=request.POST.get('title')
content=request.POST.get('content')
anote.tilte=tilte
anote.content=content
anote.save()
return HttpResponseRedirect('/note')
@check_login
def look_views(request,id):
#得到当前用户的模型对象
user_id=request.session['result']['id']
auser=User.objects.get(id=user_id)
anote=Note.objects.get(user=auser,id=id)
if request.method=='GET':
return render(request,'note/looknote.html',locals())
# elif request.method=='POST':
# tilte=request.POST.get('title')
# content=request.POST.get('content')
# anote.tilte=tilte
# anote.content=content
# anote.save()
# return HttpResponseRedirect('/note')
@check_login
def del_view(request,id):
user_id = request.session['result']['id']
auser = User.objects.get(id=user_id)
anote = Note.objects.get(user=auser, id=id)
anote.delete()
return HttpResponseRedirect('/note')
from django.conf import settings
import os
def upload_view(request):
if request.method=='GET':
return render(request,'note/upload.html',locals())
elif request.method=='POST':
afile=request.FILES['myfile']
print('got it ',afile.name)
#计算保存文件的位置
filename=os.path.join(settings.MEDIA_ROOT,afile.name)
with open(filename,'wb') as fw:
fw.write(afile.file.read())
return HttpResponse('got it '+str(afile.name))
return HttpResponse('file load failed!')
from django.shortcuts import render
from django.http import HttpResponse,HttpResponseRedirect
from . import models,form
from django.contrib.auth.models import User
# Create your views here.file:user/views.py
# def index_view(request):
# return render(request,'user/index.html',locals())
def reg_view(request):
if request.method=='GET':
return render(request,'user/register.html')
elif request.method=='POST':
username=request.POST.get('username')
password=request.POST.get('password')
password1=request.POST.get('password1')
if len(username)<4:
username_error='要求大于4字符'
return render(request,'user/register.html',locals())
elif len(password)==0:
password_error='密码不能为空'
return render(request, 'user/register.html', locals())
elif password!=password1:
password1_error='两次密码不一致'
return render(request, 'user/register.html', locals())
try:
User.objects.get(username=username)
username_error='用户名存在'
return render(request, 'user/register.html',locals())
except:
User.objects.create_user(username=username,password=password)
html = "'注册成功'<a href='login'>进入登陆</a>"
resp=HttpResponse(html)
resp.set_cookie('username',username)
return resp
# User.objects.create_superuser(username=username,password=password,email='')#创建管理员账户
#下面的代码是注册到自己写的table里面
# try:
# models.User.objects.get(username=username)
# username_error='用户名存在'
# return render(request, 'user/register.html',locals())
# except:
# models.User.objects.create(username=username,password=password)
# html="'注册成功'<a href='login'>进入登陆</a>"
# resp=HttpResponse(html)
# resp.set_cookie('username',username)
# return resp
def login_view(request):
if request.method=='GET':
username=request.COOKIES.get('username')
return render(request,'user/login.html',locals())
elif request.method=='POST':
username=request.POST.get('username')
password=request.POST.get('password')
if username=='':
username_error='用户名不能为空'
return render(request,'user/login.html',locals())
try:
auser = User.objects.get(username=username)
if auser.check_password(password):
# session里记录登陆状态,记录姓名和ID
request.session['result'] = {'username': username, 'id': auser.id}
resp = HttpResponseRedirect('/')
if 'remember' in request.POST: # 选中状态
resp.set_cookie('username', username)
return resp
# return HttpResponse('sucess')
else:
password_error='密码不对'
render(request,'user/login.html',locals())
except:
password_error = '用户名或者密码不对'
return render(request, 'user/login.html', locals())
#以下代码是登陆自己写的数据库
# try:
# auser=models.User.objects.get(username=username,password=password)
# #session里记录登陆状态,记录姓名和ID
# request.session['result']={ 'username':username,'id':auser.id}
# resp=HttpResponseRedirect('/')
# if 'remember' in request.POST:#选中状态
# resp.set_cookie('username',username)
# return resp
# # return HttpResponse('sucess')
# except:
# password_error='用户名或者密码不对'
# return render(request,'user/login.html',locals())
def log_out_view(request):
if 'result' in request.session:
del request.session['result']
return HttpResponseRedirect('/')#回到主页
def reg2_view(request):
if request.method=='GET':
myform=form.MyregForm()
# html=myform.as_p()
# print(html)
# return HttpResponse(html)
return render(request,'user/reg2.html',locals())
elif request.method=='POST':
myform=form.MyregForm(request.POST)
if myform.is_valid():
dic=myform.cleaned_data
username=dic['username']
password=dic['password']
password1=dic['password1']
age=dic['age']
idnum=dic['idnum']
return HttpResponse(str(dic))
else:
return HttpResponse('failed!!!')
使用自己的数据库一切正常,能添加修改云笔记,使用系统给的author_user时候注册登陆正常,进入‘我的云笔记’时候浏览器出现以下错误:DoesNotExist at /note/
User matching query does not exist.
Request Method: GET
Request URL: http://127.0.0.1:8000/note/
Django Version: 4.2.11
Exception Type: DoesNotExist
Exception Value:
User matching query does not exist.
Exception Location: /usr/lib/python3/dist-packages/django/db/models/query.py, line 637, in get
Raised during: note.views.wrap
Python Executable: /usr/bin/python3.12
Python Version: 3.12.3
Python Path:
['/home/sanky/code/tenada/part444/django/code/mysite3',
'/home/sanky/code',
'/snap/pycharm-professional/413/plugins/python/helpers/pycharm_display',
'/usr/lib/python312.zip',
'/usr/lib/python3.12',
'/usr/lib/python3.12/lib-dynload',
'/usr/local/lib/python3.12/dist-packages',
'/usr/lib/python3/dist-packages',
'/snap/pycharm-professional/413/plugins/python/helpers/pycharm_matplotlib_backend']
Server time: Mon, 23 Jun 2025 10:21:25 +0800