博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django之两个使用模板的例子
阅读量:5070 次
发布时间:2019-06-12

本文共 13981 字,大约阅读时间需要 46 分钟。

from django.db import models# Create your models here.class Book(models.Model):    title=models.CharField(max_length=32,unique=True)    price=models.DecimalField(max_digits=8,decimal_places=2,null=True)    pub_date=models.DateField()    publish=models.CharField(max_length=32)    is_pub=models.BooleanField(default=True)    authors=models.ManyToManyField(to="Author")class AuthorDetail(models.Model):    gf=models.CharField(max_length=32)    tel=models.CharField(max_length=32)class Author(models.Model):    name=models.CharField(max_length=32)    age=models.IntegerField()    # 与AuthorDetail建立一对一的关系    # ad=models.ForeignKey(to="AuthorDetail",to_field="id",on_delete=models.CASCADE,unique=True)    #OneToOneField 表示创建一对一关系。on_delete=models.CASCADE 表示级联删除。假设a表删除了一条记录,b表也还会删除对应的记录    ad=models.OneToOneField(to="AuthorDetail",to_field="id",on_delete=models.CASCADE,)
models.py
from django.conf.urls import urlfrom django.contrib import adminfrom app01 import viewsurlpatterns = [    url(r'^admin/', admin.site.urls),    # url(r'',views.index),#这一条不能放上面,会造成死循环    url(r'index/$',views.index),    url(r'books/add/$',views.add),    url(r'books/manage/',views.manage),    url(r'books/delete/(?P
\d+)',views.delete), url(r'books/modify/(?P
\d+)',views.modify),]
urls.py
from django.shortcuts import render,HttpResponsefrom app01 import models# Create your views here.def index(request):    ret=models.Book.objects.all().exists()#True 和 False    if ret:        book_list=models.Book.objects.all()        return render(request,'index.html',{
'book_list':book_list}) else: # hint='' hint='' return HttpResponse(hint)def add(request): if request.method=="POST": title=request.POST.get("title") price=request.POST.get("price") pub_date=request.POST.get("pub_date") publish=request.POST.get("publish") is_pub=request.POST.get("is_pub") #插入一条记录 obj=models.Book.objects.create(title=title,price=price,publish=publish,pub_date=pub_date,is_pub=is_pub) print(obj.title) hint = '' return HttpResponse(hint) return render(request,"add.html")def manage(request): ret=models.Book.objects.all().exists() print(ret) if ret: book_list=models.Book.objects.all() return render(request,"manage.html",{
"book_list":book_list}) else: hint='' return HttpResponse(hint)def delete(request,id): ret=models.Book.objects.filter(id=id).delete() print('删除记录%s'%ret) if ret[0]: hint='' return HttpResponse(hint) else: hint='' return HttpResponse(hint)def modify(request,id): if request.method=="POST": title=request.POST.get('title') price = request.POST.get("price") pub_date = request.POST.get("pub_date") publish = request.POST.get("publish") is_pub = request.POST.get("is_pub") # 更新一条记录 ret = models.Book.objects.filter(id=id).update(title=title, price=price, publish=publish, pub_date=pub_date, is_pub=is_pub) print('更新记录%s'%ret) if ret: # 判断返回值为1 hint = '' return HttpResponse(hint) # js跳转 else: # 返回为0 hint = '' return HttpResponse(hint) # js跳转 book=models.Book.objects.get(id=id) return render(request,"modify.html",{
"book":book})
views.py
{% extends 'base.html' %}{
% block title %} 查看书籍{
% endblock title %}{
% block content %}

查看书籍

{
% for book in book_list %}
{
% endfor %}
名称 价格 出版日期 出版社 是否出版
{
{ book.title }}
{
{ book.price }}
{
{ book.pub_date|date:"Y-m-d" }}
{
{ book.publish }}
{
% if book.is_pub %} 已出版 {
% else %} 未出版 {
% endif %}
{
% endblock content %}
index.html
{% extends 'base.html' %}{
% block title %}添加书籍{
% endblock title %}{
% block content %}

添加书籍

{
% csrf_token %}
{
% endblock content %}
add.html
    
{
% block title %} Title {
% endblock title %}

书籍操作

Panel content
Panel content
Panel content
{
% block content %} {
% endblock content %}
base.html
{% extends 'base.html' %}{
% block title %} 管理书籍{
% endblock title %}{
% block content %}

管理书籍

{
% for book in book_list %}
{
% endfor %}
名称 价格 出版日期 出版社 是否出版 删除 编辑
{
{ book.title }}
{
{ book.price }}
{
{ book.pub_date|date:"Y-m-d" }}
{
{ book.publish }}
{
% if book.is_pub %} 已出版 {
% else %} 未出版 {
% endif %}
{
% endblock content %}
manage.py
{% extends 'base.html' %}{
% block title %}修改书籍{
% endblock title %}{
% block content %}

修改书籍

{
% csrf_token %}
{
% endblock content %}
modify.py

 

django使用一对多和多对多关系建表之后的增删改查

-------models.py-----

from django.db import models# Create your models here.class Book(models.Model):    title=models.CharField(max_length=32)    price=models.DecimalField(max_digits=6,decimal_places=2)    create_time=models.DateField()    memo=models.CharField(max_length=32,default="")    publish=models.ForeignKey(to="Publish",default=1)    author=models.ManyToManyField("Author")#on_delete=models.CASCADE()默认级联删除    def __str__(self):        return self.titleclass Publish(models.Model):    name=models.CharField(max_length=32)    email=models.CharField(max_length=32)class Author(models.Model):    name=models.CharField(max_length=32)    def __str__(self): return self.name

 

-----urls.py----

from django.conf.urls import url,includefrom django.contrib import adminfrom app01 import viewsurlpatterns = [    url(r'^admin/', admin.site.urls),     url(r'^books/$',views.books), #查看    url(r'^addbook/$',views.addbook), #增加    url(r'^delbook/(\d+)/$',views.delbook), #删除    url(r'editbook/(\d+)/$',views.editbook), #修改]

----views.py 在app01下面-------

from django.shortcuts import render,HttpResponse,redirectfrom .models import *  def books(request):    book_list=Book.objects.all()    return render(request,"books.html",locals())def addbook(request):    if request.method=="POST":        title=request.POST.get("title") #get方法取的是html页面中的name属性        price= request.POST.get("price")        date = request.POST.get("date")        publish_id=request.POST.get("publish_id")        # author_id_list = request.POST.get("author_id_list") #此方法只能取到最后一个值        author_id_list = request.POST.getlist("author_id_list") #有多个值的注意要用getlist        #绑定书籍与出版社一对多的关系        obj=Book.objects.create(title=title,price=price,create_time=date,publish_id=publish_id)        #绑定书籍与作者多对多的关系        obj.author.add(*author_id_list)        # obj.author.remove(1,2) #解除关系        # obj.author.clear() #清空所有关系        return redirect("/books/")    else:        publish_list=Publish.objects.all()        author_list=Author.objects.all()    return render(request,"addbook.html",locals())def delbook(request,id):    Book.objects.filter(id=id).delete()    return redirect("/books/")def editbook(request,id):    if request.method=="POST":        title=request.POST.get("title")  #get方法取的是html页面中的name属性        price=request.POST.get("price")         date=request.POST.get("date")        publish_id=request.POST.get("publish_id")        author_id_list=request.POST.getlist("author_id_list")        Book.objects.filter(id=id).update(title=title,price=price,create_time=date,publish_id=publish_id)        book=Book.objects.filter(id=id).first()        # book.author.clear()        # book.author.add(*author_id_list)        book.author.set(author_id_list) #相当于上面两条        return redirect ("/books/")    edit_obj=Book.objects.filter(id=id).first()  #加first从queryset得到 models对象    publish_list = Publish.objects.all()    author_list = Author.objects.all()    return render(request,"editbook.html",locals())

 ----books.html----

    
Title
{% for book in book_list %}
{% endfor %}
序号 书名 价格 出版时间 出版社 作者 操作
{ { forloop.counter }} { { book.title }} { { book.price }} { { book.create_time|date:"Y-m-d" }} { { book.publish.name }} {% for author in book.author.all %} { { author.name }} {% if not forloop.last %} , {% endif %} {% endfor %} 删除 编辑

-----addbook.html-----

    
Title
{% csrf_token %}

书籍名称

书籍价格

出版日期

-------editbook.html-----

    
Title
{% csrf_token %}

书籍名称

书籍价格

出版日期

 

posted on
2018-10-31 16:23 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/mmyy-blog/p/9883947.html

你可能感兴趣的文章
CentOS7 限制SSH密码尝试次数
查看>>
CSS学习笔记(七)阴影
查看>>
NHB下载地址
查看>>
异常处理
查看>>
2018年阿里巴巴关于java重要开源项目汇总
查看>>
赢友网络通用框架V10.0.0(WinuAppSoft) 基础框架设计表
查看>>
安装docker以及问题解决办法
查看>>
BZOJ2724 [Violet]蒲公英(分块)
查看>>
堆 和 栈的 区别(经典)
查看>>
td 自动换行
查看>>
2016NOIP总结
查看>>
POJ1704 Georgia and Bob 博弈论 尼姆博弈 阶梯博弈
查看>>
??????
查看>>
纯手写的原生js购物车 (不要在意布局)
查看>>
Python模块:日志输出—logging模块
查看>>
C:\Windows\System32\drivers\etc\hosts文件显示
查看>>
initWithFrame和initWithCoder的区别
查看>>
多次点击表单提交按钮,防止表单重复提交
查看>>
TCP socket 多线程 并发服务器(发送)与客户端(接收)
查看>>
【VS开发】【智能语音处理】Windows下麦克风语音采集
查看>>