# Create your views here. from django.shortcuts import HttpResponse,render,redirect from django.http import JsonResponse from appweb import models def linyaohong(request): return render(request, "html/index.html") # with open("templates/html/index.html",'r',encoding='utf-8') as f: # data = f.read() # return HttpResponse(data) # return HttpResponse('Hello Linyaohong') def yaohong(request): return HttpResponse('Hello yaohong') def login(request): ''' 如果是POST请求,就取出数据做登陆判断 request.POST.get 获取用户提交的数据 如果是get请求:return render(request, 'html/login.html') ''' error_msg = "" if request.method == 'POST': # print(request.POST) 获取所有POST数据 user_email = request.POST.get("user_email",None) password = request.POST.get("password",None) if user_email == "123@qq.com" and password == "123": # return HttpResponse("登陆成功") return redirect("https:www.baidu.com") else: error_msg = "邮箱或密码错误" #render 完成html字符串替换 return render(request, 'html/login.html',{"error": error_msg}) # return render(request, 'html/login.html') def user_list(request): ret = models.Userinfo.objects.all().order_by("id") #查询所有语句# order_by排序 # print(ret) # print(ret[0].id,ret[0].name) return render(request, 'html/user_list.html',{"user_list": ret}) # return HttpResponse("用户表") #添加用户 def add_user(request): if request.method == "POST": #用户提交了新的用户名 new_name = request.POST.get("username",None) #往数据库添加数据 models.Userinfo.objects.create(name=new_name) return redirect("/user_list") return render(request, 'html/add_user.html') #展示出版社列表 def publisher_list(request): ret = models.Publisher.objects.all().order_by("id")#查询所有语句 return render(request, 'html/publisher_list.html',{"publisher_list": ret}) #添加出版社 def publisher_add(request): error_msg = "" if request.method == "POST": #用户提交了新的用户名 publisher_name = request.POST.get("publisher",None) #往数据库添加数据 if publisher_name: models.Publisher.objects.create(name=publisher_name) return redirect("/publisher_list/") else: error_msg = "出版社名字不能为空" return render(request, 'html/publisher_add.html',{"error":error_msg}) #删除出版社 def delete_publisher(request): #获取删除指定的数据/然后进行删除 print(request.GET)# GET请求的参数 delete_id = request.GET.get("id",None) #字典取值,没有值,设为默认为None if delete_id: #去数据库删除当前id值的数据 del_obj = models.Publisher.objects.get(id=delete_id) del_obj.delete()#删除数据 #返回删除后的页面 return redirect("/publisher_list/") else: return HttpResponse("要删除的数据不存在") # url分组匹配传参形式,删除出版社 def del_publisher(request,delete_id): if delete_id: #去数据库删除当前id值的数据 del_obj = models.Publisher.objects.get(id=delete_id) del_obj.delete()#删除数据 #返回删除后的页面 return redirect("/publisher_list/") else: return HttpResponse("要删除的数据不存在") # 位置参数 def test01(request,args1,args2): print(args1,args2) return HttpResponse("位置参数") #关键字参数 # def test02(request,name,age): # print(name,age) # return HttpResponse("关键字参数") def test02(request,**kwargs): print(kwargs) return HttpResponse("关键字参数") #编辑出版社 def publisher_edit(request): #用户修改出版社名字,点击提交按钮,发送过来的新出版社名字 if request.method == "POST": error_msg = "" print(request.POST) # 取出新的出版社名字 edit_id = request.POST.get("id", None) publisher_name = request.POST.get("publisher", None) if publisher_name: #根据ID取到编辑的出版社 edit_publisher = models.Publisher.objects.get(id=edit_id) edit_publisher.name = publisher_name edit_publisher.save() #把修改提交到数据库 #跳转到出版社页面,查看是否修改成 return redirect("/publisher_list/") else: error_msg = "出版社名字不能为空" return render(request, 'html/publisher_edit.html', {"error": error_msg}) # return HttpResponse("编辑的出版社不能为空") edit_id = request.GET.get("id", None) if edit_id: publisher_obj = models.Publisher.objects.get(id=edit_id) return render(request,"html/publisher_edit.html/",{"publisher":publisher_obj}) else: return HttpResponse("编辑的出版社不存在") # 展示书籍列表 def book_list(request): all_book = models.Book.objects.all() return render(request, 'html/book_list.html',{"booklist": all_book}) # 添加书籍 def book_add(request): messages= "" if request.method == "POST": print(request.POST) #{"boot_title":"lua" , "publisher":14} new_title = request.POST.get("book_title") if new_title: net_publisher_id = request.POST.get("publisher") print("ADD",new_title,net_publisher_id) models.Book.objects.create(title=new_title,publisher_id=net_publisher_id) return redirect("/book_list/") messages= "书籍不能为空" ret = models.Publisher.objects.all() return render(request,"html/book_add.html",{ "publisher_list" : ret,"error":messages}) #删除书籍 def delete_book(request): #获取删除指定的数据/然后进行删除 delete_id = request.GET.get("id",None) #字典取值,没有值,设为默认为None if delete_id: #去数据库删除当前id值的数据 del_obj = models.Book.objects.get(id=delete_id) del_obj.delete()#删除数据 #返回删除后的页面 return redirect("/book_list/") else: return HttpResponse("要删除的数据不存在") #编辑书籍 def book_edit(request): if request.method == "POST": # 从提交的数据里取书名和书关联的出版社 edit_id = request.POST.get("id") new_title = request.POST.get("book_title") new_publisher_id = request.POST.get("publisher") print(edit_id,new_title,new_publisher_id) #更新 edit_boo_obj = models.Book.objects.get(id=edit_id) edit_boo_obj.title = new_title # 更新书名 edit_boo_obj.publisher_id = new_publisher_id #更新关联的出版社 edit_boo_obj.save() return redirect("/book_list/") edit_id = request.GET.get("id") edit_boo_obj = models.Book.objects.get(id=edit_id) ret = models.Publisher.objects.all() return render(request, "html/book_edit.html", {"publisher_list":ret,'book_obj':edit_boo_obj} ) #作者列表 def author_list(request): # 查询所有的作者 all_author = models.Author.objects.all() # ret = models.Author.objects.get(id=1) # print(ret.name) # print(ret.book.all()) #当前作者关联的所有书籍******************** return render(request, "html/author_list.html", {"author_list": all_author}) # 添加作者 def author_add(request): if request.method == "POST": new_author_name = request.POST.get("author_name") # post 提交的数据是多个值的时候 如多选的select checkbox books = request.POST.getlist("boots") # 创建作者 new_author_obj = models.Author.objects.create(name=new_author_name) # 把作者和书籍建立对应关系 new_author_obj.book.set(books) # get ************************* print(new_author_name,books) return redirect("/author_list/") ret = models.Book.objects.all() return render(request, "html/author_add.html", {"book_list": ret}) # 删除作者 def author_delete(request): delete_id = request.GET.get("id") # 1. 去作者表把作者删了 # 2. 去作者和书的关联表,把对应的关联记录删除了 (ORM实现了删除关联表) models.Author.objects.get(id=delete_id).delete() return redirect("/author_list/") #编辑作者 def author_edit(request): if request.method == "POST": #拿到提交的编辑后的数据 edit_author_id = request.POST.get("author_id") new_author_name = request.POST.get("author_name") # 拿到作者关联的书籍 net_books = request.POST.getlist("books") # 根据ID找到当前要编辑的作者 edit_author_obj = models.Author.objects.get(id=edit_author_id) # 更新作者名字 edit_author_obj.name = new_author_name # 更新对应关系 edit_author_obj.book.set(net_books) edit_author_obj.save() return redirect("/author_list/") # 从url里获取作者的id信息 edit_id = request.GET.get("id") # 找到要编辑的作者对象 edit_author_obj = models.Author.objects.get(id=edit_id) # 查询所有的书籍对象 ret = models.Book.objects.all() return render(request,"html/author_edit.html", {"book_list": ret, "author": edit_author_obj} ) class Person(object): def __init__(self,name,age): self.name = name self.age = age def dream(self): return "类里的方法" def __str__(self): # python3 return "".format(self.name,self.age) def __unicode__(self): # python2 return "".format(self.name) def index(request): file_size = 1239312312324 linyaohong = "蔺要红" age = 18 from datetime import datetime now = datetime.now() print(now) messages = "" namelist = ["钢铁侠","蜘蛛侠","绿巨人","雷神","黑寡妇","绯红女巫"] nameidct = { "first_name":"黑豹","last_name":"星爵" } p1 = Person("蚁人",109) p2 = Person("奇异博士",433) plist = [p1,p2] a_html = "后端A标签" p_str = ''' 随机看功能:是用户发布视频类信息,其他用户点击随机看,可以看到其他人发送的视频信息。 关注信息:是用户可以无限制的关注他人,他人也可以被无限度的关注,关注他人后,他人发送的任何信息。 包括文字、图片、视频、都会出现在他人的关注圈内被他人看到。 第二 用户点击+号可以直接发送视频、文字或者图片信息到关注圈,如果是发送视频会额外的发送到随机看,供陌生人随机刷到观看 ''' return render( request,"html/index.html", { "name":linyaohong , "age1":age , "error":messages, "name_list": namelist, "name_dict": nameidct, "person1":p1, "person2": p2, "p_list": plist, "filesize": file_size, "now": now, "a_html": a_html, "p_str": p_str, } ) #添加出版社 from django.views import View class Publisheradd(View): def post(self,request): error_msg = "" #用户提交了新的用户名 publisher_name = request.POST.get("publisher",None) #往数据库添加数据 if publisher_name: models.Publisher.objects.create(name=publisher_name) return redirect("/publisher_list/") else: error_msg = "出版社名字不能为空" return render(request, 'html/publisher_add.html', {"error": error_msg}) def get(self,request): print(request.path_info) return render(request, 'html/publisher_add.html') class Upload(View): def post(self,request): filename = request.FILES["upload_file"].name print(filename) print(request.FILES.get("upload_file").name) with open(filename,'wb') as f: for i in request.FILES["upload_file"].chunks(): f.write(i) return HttpResponse("上传OK") def get(self,request): return render(request,"upload.html") def json_test(request): ''' import json data = {"name":"Lin","age":18} data_str = json.dumps(data) return HttpResponse(data_str) :param request: json_test 自己写api :return: {"name":"Lin","age":18} ''' ''' Django自带的返回字符串 Django封装的专门用来返回json格式的字符串 ''' # from django.http import JsonResponse data = {"name": "Lin", "age": 18} return JsonResponse(data) ''' 能接受字典,不能接受列表,如果想传的话,加参数safe,不做安全检查 ''' data2 = [1,1,2,3,12,13,12] # return JsonResponse(data2,safe=False) def test_delete(request,table_name,delete_id): print(table_name,delete_id) table_name = table_name.capitalize() #首字母大写 if hasattr(models,table_name): table_class = getattr(models,table_name) try: table_class.objects.get(id=delete_id).delete() except Exception as e: print(str(e)) print("ID值不存在") return HttpResponse("表名:{} id{}".format(table_name,delete_id)) else: return HttpResponse("表名{}不存在".format(table_name))