python-day73--django课上项目01

from django.db import models

# Create your models here.

class Book(models.Model):
    name=models.CharField(max_length=32)
    pubDate=models.DateField()
    price=models.DecimalField(max_digits=5,decimal_places=2)
    publish=models.ForeignKey('Publish')
    author=models.ManyToManyField('Author')




class Publish(models.Model):
    name=models.CharField(max_length=32)
    pubdetail=models.OneToOneField('Pubdetail')


class Pubdetail(models.Model):
    add=models.CharField(max_length=32)
    content=models.CharField(max_length=32)


class Author(models.Model):
    name=models.CharField(max_length=32)
    authdetail=models.OneToOneField('Authordetail')


class Authordetail(models.Model):
    sex=models.CharField(max_length=32)
    tel=models.IntegerField()
    addr=models.CharField(max_length=32)


class User(models.Model):
    name=models.CharField(max_length=32)
    password=models.CharField(max_length=32)
models.py
from django.shortcuts import render,redirect
from app01 import models
from django.contrib import auth
# Create your views here.
from django.contrib.auth.models import User
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.contrib.auth import logout
def login(request):
    s=''
    if request.method=='POST':

        name=request.POST.get('name')
        pwd=request.POST.get('password')

        # res=models.User.objects.filter(name=name,password=pwd)
        # if res:
        #cookie代码实现
        #     ret=redirect('/shujichaxun/')
        #     ret.set_cookie('login','asd',10)
        #     return ret


        #auth代码实现
        res=auth.authenticate(username=name,password=pwd)
        if res:
            print('---------------------',request.user.__dict__,type(request.user))
            auth.login(request,res)
            return redirect('/shujichaxun/')


            #session实现代码
            # request.session['asd']=True
            # return redirect('/shujichaxun/')
        s='用户名或密码错误'
    return render(request,'登录校验.html',{'s':s})

def zhuce(request):
    if request.method=='POST':
        name=request.POST.get('name')
        pwd=request.POST.get('password')
        if len(name)>0 and len(pwd)>0 :
            #注册方式1: 自建user表
            # user_obj=models.User.objects.create(name=name,password=pwd)

            #用auth模块实现,用django自带的user表
            user=User.objects.create_user(username=name,password=pwd)
            return redirect('/middle/')

    return render(request,'zhuce.html')

def xiugaimima(request):
    s=''
    if request.method=='POST':
        old_pwd=request.POST.get('oldpwd')
        new_pwd=request.POST.get('newpwd')
        aga_pwd=request.POST.get('agapwd')
        username=request.user
        user=User.objects.get(username=username)

        if user.check_password(old_pwd) and new_pwd==aga_pwd:
            user.set_password(new_pwd)
            user.save()
            return redirect('/login/')
        s='原密码不正确或新密码不一致'

    return render(request,'xiugaimima.html',{'s':s})

def zhuxiao(request):

    logout(request)
    return redirect('/login/')

def xieyi(request):
    return render(request,'xieyi.html')

def middle(request):
    return render(request,'middle.html')

def shujichaxun(request):
    # if request.user.is_authenticated():
    #     import datetime,random
    # #     Booklist = []
    # #     for i in range(100):
    # #          Booklist.append(models.Book(name="book" + str(i),pubDate=datetime.datetime.now(),price=20 + i,publish_id=2))
    # #     models.Book.objects.bulk_create(Booklist)
    # #
        book_list=models.Book.objects.all()
        paginator=Paginator(book_list,7)

        n=paginator.page_range
        num=int(request.GET.get("n",1))  #因为get 得到的是字符串
        book_list=paginator.page(num)

        # return render(request,"chaxun.html",{"book_list":book_list,"page_range":page_range,"num":int(num)})
        return render(request,"chaxun.html",{"book_list":book_list,'n':n,'num':num})




    #cookie实现代码
    # res=request.COOKIES.get('login')
    # if res=='asd':
    # infoDict=models.Book.objects.all()
    # return render(request,'chaxun.html',{'infoDict':infoDict})
    # return redirect('/login/')

    # auth模块实现
    # if request.user.is_authenticated():
    #     infoDict=models.Book.objects.all()
    #     return render(request,'chaxun.html',{'infoDict':infoDict})
    # return redirect('/login/')

    #session实现代码
    # res=request.session.get('asd',None)
    # if res:
    #     infoDict=models.Book.objects.all()
    #     return render(request,'chaxun.html',{'infoDict':infoDict})
    # return redirect('/login/')

def shujishanchu(request,id):
    #cookie实现代码
    # res=request.COOKIES.get('login')
    # if res=='asd':
    #     book_obj=models.Book.objects.get(id=id)
    #     auth_list=book_obj.author.all()
    #     book_obj.author.remove(*auth_list)
    #     book_obj.delete()
    #
    #     return redirect('/shujichaxun/')
    # return redirect('/login/')

    #auth模块实现
    if request.user.is_authenticated():
        book_obj=models.Book.objects.get(id=id)
        auth_list=book_obj.author.all()
        book_obj.author.remove(*auth_list)
        book_obj.delete()
        return redirect('/shujichaxun/')
    return redirect('/login/')


def shujitianjia(request):
    #cookie代码实现
    # res=request.COOKIES.get('login')
    # if res=='asd':

    #auth模块实现
    if request.user.is_authenticated():
        if request.method=='POST':
            name=request.POST.get('name')
            auth=request.POST.getlist('aut')
            date=request.POST.get('date')
            pub=request.POST.get('pub')
            price=request.POST.get('price')
            pub_id=models.Publish.objects.filter(name=pub)[0].id
            # pub_obj=models.Publish.objects.filter(name=pub)[0]

            book_obj=models.Book.objects.create(name=name,pubDate=date,price=price,publish_id=pub_id)
            # book_obj=models.Book.objects.create(name=name,pubDate=date,price=price,publish=pub_obj)
            auth_l=[]
            for i in auth:
                auth_l.append(models.Author.objects.get(name=i))
            book_obj.author.add(*auth_l)
            return redirect('/shujichaxun/')

        authList=models.Author.objects.all()
        pubList=models.Publish.objects.all()
        return render(request,'tianjia.html',{'authList':authList,'pubList':pubList})
    return redirect('/login/')


def shujibianji(request):
    #cookie代码实现
    # res=request.COOKIES.get('login')
    # if res=='asd':


    #auth模块实现
    if request.user.is_authenticated():
        if request.method=="POST":
            id=request.POST.get('id')
            name=request.POST.get('name')
            auth=request.POST.getlist('aut')
            l=[]
            for i in auth:
                l.append(models.Author.objects.get(name=i))
            pubdate=request.POST.get('date')
            publish=request.POST.get('pub')
            publish_id=models.Publish.objects.get(name=publish).id
            price=request.POST.get('price')
            book_obj=models.Book.objects.filter(id=id)
            book_obj.update(name=name,pubDate=pubdate,price=price,publish_id=publish_id)
            book_obj[0].author.clear()
            book_obj[0].author.add(*l)
            return redirect('/shujichaxun/')

        id=request.GET.get('id')
        name=models.Book.objects.get(id=id).name
        pubdate=models.Book.objects.get(id=id).pubDate
        price=models.Book.objects.get(id=id).price
        publish_obj=models.Book.objects.get(id=id).publish
        publish=models.Publish.objects.all()
        auth=models.Book.objects.get(id=id).author.all()
        authlist=models.Author.objects.all()
        return render(request,'bianji.html',{'id':id,'name':name,'pubdate':pubdate,'price':price,'publish':publish,'auth':auth,'authlist':authlist,'publish_obj':publish_obj})
    return redirect('/login/')



def zuozhechaxun(request):
    #cookie 实现代码
    # res=request.COOKIES.get('login')
    # if res=='asd':
    #     authlist=models.Author.objects.all()
    #     return render(request,'zuozhe.html',{'authlist':authlist})
    # return redirect('/login/')


    #auth模块实现
    if request.user.is_authenticated():
        authlist=models.Author.objects.all()
        return render(request,'zuozhe.html',{'authlist':authlist})
    return redirect('/login/')



    #session 实现代码
    # res=request.session['asd']
    # if res:
    #     authlist=models.Author.objects.all()
    #     del request.session['asd']
    #     return render(request,'zuozhe.html',{'authlist':authlist})
    # return redirect('/login/')



def chubanshechaxun(request):
    #cookie 实现代码
    # res=request.COOKIES.get('login')
    # if res=='asd':
    #     publish=models.Publish.objects.all()
    #     return render(request,'chubanshe.html',{'publish':publish})
    # return redirect('/login/')


    #auth模块实现
    if request.user.is_authenticated():
        publish=models.Publish.objects.all()
        return render(request,'chubanshe.html',{'publish':publish})
    return redirect('/login/')


def test(request):
    name='egon'
    age=73
    return  render(request,'test.html',{'name':name,'age':age})
views.py
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title></title>
    <link rel="stylesheet" href="/static/bootstrap-3.3.7/css/bootstrap.min.css"/>
    <script src="/static/jquery-3.2.1.js"></script>
    <script src="/static/bootstrap-3.3.7/js/bootstrap.min.js"></script>
    <style>
        .ccc {
            margin-top: 70px;
        }

        .clc {
            height: 30px;
            margin-left: -15px;
            text-align: center;
            line-height: 30px;
            border-radius: 5px;
        }

        .menu {
            margin-top: 7px;

        }

        .panel {
            height: 580px;
        }

        .c2 {
            position: relative;
            left: 200px;
            top: 400px;

{#            border: 1px solid red;#}

        }

        .ccc .row .sidebar {
            padding-top: 20px;
            height: 600px;
            background-color: #f5f5f5;
            margin-top: -20px;

        }
        table{
            margin-top: -60px;
        }
    </style>
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top">
    <div class="container-fluid">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
                    aria-expanded="false" aria-controls="navbar">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="">图书管理系统</a>
        </div>
        <div id="navbar" class="navbar-collapse collapse">
            <ul class="nav navbar-nav navbar-right">
                <li><a href="">设置</a></li>
                <li><a href="">帮助</a></li>
                <li><a href="/xiugaimima/">修改密码</a></li>
                <li><a href="/zhuxiao/">注销</a></li>
                <li><a href="">退出</a></li>
            </ul>
            <form class="navbar-form navbar-right">
                <input type="text" class="form-control" placeholder="搜索...">
            </form>
        </div>
    </div>
</nav>
<div class="container-fluid ccc">
    <div class="row">
        <div class="col-sm-3 col-md-2 sidebar">
            <div class="menu">
                <a href="/shujichaxun/" style="text-decoration: none"><div class="head bg-primary clc" id="clc1">书 籍 管 理</div></a>
                <ul class="nav nav-sidebar hide" id="clc4">
                    <li class=""><a href="">Overview <span
                            class="sr-only">(current)</span></a>
                    </li>
                    <li><a href="">Reports</a></li>
                    <li><a href="">Analytics</a></li>
                    <li><a href="">Export</a></li>
                </ul>
            </div>
            <div class="menu">
                <a href="/zuozhechaxun/" style="text-decoration: none"><div class="head bg-primary clc" id="clc2">作 者 管 理</div></a>

                <ul class="nav nav-sidebar hide" id="clc5">
                    <li><a href="">Nav item</a></li>
                    <li><a href="">Nav item again</a></li>
                    <li><a href="">One more nav</a></li>
                    <li><a href="">Another nav item</a></li>
                    <li><a href="">More navigation</a></li>
                </ul>
            </div>
            <div class="menu">
                <a href="/chubanshechaxun/" style="text-decoration: none"><div class="head bg-primary clc" id="clc3">出版社管理</div></a>

                <ul class="nav nav-sidebar hide" id="clc6">
                    <li><a href="">Nav item again</a></li>
                    <li><a href="">One more nav</a></li>
                    <li><a href="">Another nav item</a></li>
                </ul>
            </div>
        </div>

        {% block tt %}
        <div class="col-sm-9 col-md-10 main">
            <div class="panel panel-primary">
                <div class="panel-heading">书籍信息</div>
                <div class="panel-body">
                    <!-- Button trigger modal -->
                    <a href="/shujitianjia/"><button type="button" class="btn btn-primary" data-toggle="modal" data-target="#myModal">
                        添加
                    </button></a>

                    <table class="table table-hover">
{#                    <tr>#}
                        <thead>
                        <th>序号</th>
                        <th>书名</th>
                        <th>作者</th>
                        <th>出版日期</th>
                        <th>出版社</th>
                        <th>价钱</th>


                        </thead>
{#                    </tr>#}
                    {% block tbody %}

                    {% endblock tbody %}
                    {% endblock tt %}
{#                    <div class="row c2">#}
{#                        <nav aria-label="Page navigation " class="pull-right c5">#}
{#                            <ul class="pagination">#}
{#                                <li>#}
{#                                    <a href="#" aria-label="Previous">#}
{#                                        <span aria-hidden="true">&laquo;</span>#}
{#                                    </a>#}
{#                                </li>#}
{#                                <li><a href="#">1</a></li>#}
{#                                <li><a href="#">2</a></li>#}
{#                                <li><a href="#">3</a></li>#}
{#                                <li><a href="#">4</a></li>#}
{#                                <li><a href="#">5</a></li>#}
{#                                <li>#}
{#                                    <a href="#" aria-label="Next">#}
{#                                        <span aria-hidden="true">&raquo;</span>#}
{#                                    </a>#}
{#                                </li>#}
{#                            </ul>#}
{#                        </nav>#}
{#                    </div>#}
                    </table>
                </div>
            </div>
        </div>
    </div>

    <div class="row">
        <div class="col-md-6 col-md-offset-3" style="margin-top: -40px">
            <hr/>
            <div style="text-align: center">
                <a href="">关于我们 |</a>
                <a href="">联系我们 |</a>
                <a href="">意见与反馈 |</a>
                <a href="">友情链接 |</a>
                <a href="">公告</a>

                <div>
                    <div style="font-size: 13px">
                        版权所有:  Cool
                    </div>
                </div>
            </div>


        </div>
    </div>
</div>
<script>

{#    $('.clc').on('click', function () {#}
{#        $(this).parent().siblings().children('ul').addClass('hide');#}
{#        $(this).next().toggleClass('hide');#}
{#    })#}


</script>
</body>
</html>
base.html
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title></title>
        <link rel="stylesheet" href="/static/bootstrap-3.3.7/css/bootstrap.min.css"/>
    <script src="/static/jquery-3.2.1.js"></script>
    <script src="/static/bootstrap-3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
    <div class="row col-md-4 col-md-offset-4" style="margin-top: 100px">
                {% block form %}
                {% endblock form %}
    </div>
    </div>

</body>
</html>
base2.html
{% extends 'base2.html' %}
{% block form %}
    <form action="/shujibianji/" method="post">
        {% csrf_token %}
        <input type="hidden" name="id" value="{{ id }}"/>

        <div class="form-group">
            <label for="usernaem">书名</label>
            <input type="text" class="form-control item" id="usernaem" name="name" value="{{ name }}">
        </div>

        <div class="form-group">
            <label for="age">作者</label>
            <select name="aut" class="form-control item" id="age" multiple>
                {% for aut in authlist %}

                    {% if aut in auth %}
                        <option selected value="{{ aut.name }}">{{ aut.name }}</option>
                    {% else %}
                        <option value="{{ aut.name }}">{{ aut.name }}</option>
                    {% endif %}
                {% endfor %}
            </select>
        </div>
        <div class="form-group">
            <label for="gender">出版时间</label>
            <input type="date" class="form-control item" id="gender" name="date" value="{{ pubdate|date:'Y-m-d' }}">
        </div>
        <div class="form-group">
            <label for="publish">出版社</label>
            <select name="pub" class="form-control item" id="publish">
                {% for pub in publish %}
                    {% if pub == publish_obj %}
                    <option selected value="{{ pub.name }}">{{ pub.name }}</option>
                    {% else %}
                    <option value="{{ pub.name }}">{{ pub.name }}</option>
                    {% endif %}
                {% endfor %}
            </select>
        </div>
        <div class="form-group">
            <label for="gender1">价格</label>
            <input type="text" class="form-control item" id="gender1" name="price" value="{{ price }}">
        </div>
        <div class="pull-right"><a href="/shujichaxun/">
            <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
        </a>
            <input type="submit" value="提交" class="btn btn-primary"/>

        </div>
    </form>
{% endblock form %}
bianji.html
{% extends "base.html" %}
{% block tbody %}
    <tbody>

    {% for book in book_list %}
        <tr>
            <td>{{ forloop.counter }}</td>
            <td>{{ book.name }}</td>
            <td>{% for item in book.author.all %}
                /{{ item.name }}/
            {% endfor %}
            </td>
            <td>{{ book.pubDate|date:'Y-m-d' }}</td>
            <td>{{ book.publish.name }}</td>
            <td>{{ book.price }}</td>
            <td>
                <div class="pull-left">
                    <a href="/shujishanchu/{{ book.id }}">
                        <button class="btn btn-danger">删除</button>
                    </a>
                </div>
                <a href="/shujibianji?id={{ book.id }}">
                    <button class="btn btn-success" style="margin-left: 5px">编辑</button>
                </a>
            </td>

        </tr>
    {% endfor %}

    <div class="row c2">
        <nav aria-label="Page navigation">
            <ul class="pagination">


                {% if book_list.has_previous %}
                    <li><a href="/shujichaxun?n={{ book_list.previous_page_number }}" aria-label="Previous">
                        <span aria-hidden="true">&laquo;</span>
                    </a></li>
                {% else %}
                    <li class="disabled"><a href="" aria-label="Previous">
                        <span aria-hidden="true">&laquo;</span>
                    </a></li>

                {% endif %}


                {% for i in n %}
                    {% if num == i %}
                        <li class="active"><a href="/shujichaxun?n={{ i }}">{{ i }}</a></li>
                    {% else %}
                        <li><a href="/shujichaxun?n={{ i }}">{{ i }}</a></li>
                    {% endif %}
                {% endfor %}

                {% if book_list.has_next %}
                    <li><a href="/shujichaxun?n={{ book_list.next_page_number }}#" aria-label="Next">
                        <span aria-hidden="true">&raquo;</span>
                    </a></li>

                {% else %}
                    <li class="disabled">
                        <a href="" aria-label="Next">
                            <span aria-hidden="true">&raquo;</span>
                        </a>
                    </li>
                {% endif %}

            </ul>
        </nav>
    </div>



{% endblock tbody %}
chaxun.html
{% extends 'base.html'%}
{% block tt %}
<div class="col-sm-9 col-md-10 main">
            <div class="panel panel-primary">
                <div class="panel-heading">出版社信息</div>
                <div class="panel-body">
                    <!-- Button trigger modal -->
                    <a href="/chubanshetianjia/"><button type="button" class="btn btn-primary" data-toggle="modal" data-target="#myModal">
                        添加
                    </button></a>

                    <table class="table table-hover">
{#                    <tr>#}
                        <thead>
                        <th>序号</th>
                        <th>社名</th>
                        <th>地址</th>
                        <th>详情</th>
                        </thead>
<tbody>
    {% for pub in publish %}
        <tr>
            <td>{{ forloop.counter }}</td>
            <td>{{ pub.name }}</td>
            <td>{{ pub.pubdetail.add }}</td>
            <td>{{ pub.pubdetail.content }}</td>

            <td>
                <div class="pull-left">
                <a href="/chubansheshanchu/{{ pub.id }}">
                    <button class="btn btn-danger" >删除</button>
                </a>
                </div>
                <a href="/chubanshebianji/?id={{ pub.id }}">
                    <button class="btn btn-success" style="margin-left: 5px">编辑</button>
                </a>
            </td>
        </tr>
        </tbody>
    {% endfor %}
{% endblock tt %}
chubanshe.html
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <meta http-equiv="Refresh" content="3;URL=/login/">
{#    <meta http-equiv="X-UA-Compatible" content="IE=edge">#}
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title></title>
        <link rel="stylesheet" href="/static/bootstrap-3.3.7/css/bootstrap.min.css"/>
    <script src="/static/jquery-3.2.1.js"></script>
    <script src="/static/bootstrap-3.3.7/js/bootstrap.min.js"></script>
    <link rel="stylesheet" href="/static/bootstrap-3.3.7/css/bootstrap.min.css"/>
    <script src="/static/jquery-3.2.1.js"></script>
    <script src="/static/bootstrap-3.3.7/js/bootstrap.min.js"></script>
        <style>
        body {
            background-color: #cccccc;
        }

        .container {
            margin-top: 150px;

        }

    </style>
</head>
<body>
    <div class="container">
        <div class="row">
            <div class="col-md-4 col-md-offset-4">
                <h4>注册成功,将跳转到登陆页面<a href="/login/">点我直接跳转</a></h4>
            </div>
        </div>
    </div>
</body>
</html>
middle.html
{% extends 'base2.html' %}
{% block form %}
    <form action="/shujitianjia/" method="post">
        {% csrf_token %}
        <div class="form-group">
            <label for="usernaem">书名</label>
            <input type="text" class="form-control item"  id="usernaem" name="name" placeholder="name">
        </div>

        <div class="form-group">
            <label for="age">作者</label>
            <select name="aut" class="form-control item" id="age" multiple>
                {% for aut in authList %}
                    <option value="{{ aut.name }}">{{ aut.name }}</option>
                {% endfor %}
            </select>
        </div>
        <div class="form-group">
            <label for="gender">出版时间</label>
            <input type="date" class="form-control item" id="gender" name="date">
        </div>
                <div class="form-group">
            <label for="publish">出版社</label>
            <select name="pub" class="form-control item" id="publish">
                {% for pub in pubList %}
                    <option value="{{ pub.name }}">{{ pub.name }}</option>
                {% endfor %}
            </select>
        </div>
        <div class="form-group">
            <label for="gender1">价格</label>
            <input type="text" class="form-control item" id="gender1" name="price" placeholder="price">
        </div>
        <div class="pull-right"><a href="/shujichaxun/"><button type="button" class="btn btn-default" data-dismiss="modal">取消</button></a>
        <input type="submit" value="提交" class="btn btn-primary"/>
        </div>
    </form>
{% endblock form %}
tianjia.html
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title></title>
</head>
<body>
<h4>知道啥协议啊  ,你就同意...</h4>
</body>
</html>
xieyi.html
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title></title>
    <link rel="stylesheet" href="/static/bootstrap-3.3.7/css/bootstrap.min.css"/>
    <script src="/static/jquery-3.2.1.js"></script>
    <script src="/static/bootstrap-3.3.7/js/bootstrap.min.js"></script>
    <style>
        body {
            background-color: #cccccc;
        }

        .container {
            margin-top: 150px;

        }

    </style>
</head>
<body>
<div class="container">
    <div class="row">
        <div class="col-md-4 col-md-offset-4">

            <form class="form-horizontal" action="/xiugaimima/" method="post">
                {% csrf_token %}
                <h3 style="text-align: center">修改密码</h3>
                <div class="form-group" style="margin-top: 30px">
                    <label for="inputEmail3" class="col-sm-3 control-label">原密码</label>

                    <div class="col-sm-9" style="margin-left: -20px">
                        <input type="password" class="form-control" id="inputEmail3" placeholder="原密码" name="oldpwd">
                    </div>
                </div>
                <div class="form-group">
                    <label for="inputPassword3" class="col-sm-3 control-label">新密码</label>

                    <div class="col-sm-9" style="margin-left: -20px">
                        <input type="password" class="form-control" id="inputPassword3" placeholder="新密码" name="newpwd">
                    </div>
                </div>
                <div class="form-group">
                    <label for="inputPassword4" class="col-sm-3 control-label">确认密码</label>

                    <div class="col-sm-9" style="margin-left: -20px">
                        <input type="password" class="form-control" id="inputPassword4" placeholder="确认密码"
                               name="agapwd">
                    </div>
                </div>
                <div class="col-sm-10 col-sm-offset-2" style="color: red">{{ s }}</div>
                <div class="form-group" style="margin-left: -40px">
                    <div class="col-sm-offset-3 col-sm-9">
                        <button type="submit" class="btn btn-primary">提交</button>
                    </div>
                </div>
            </form>
        </div>
    </div>
</div>

</body>
</html>
xiugaimima.html
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title></title>
    <link rel="stylesheet" href="/static/bootstrap-3.3.7/css/bootstrap.min.css"/>
    <script src="/static/jquery-3.2.1.js"></script>
    <script src="/static/bootstrap-3.3.7/js/bootstrap.min.js"></script>
        <style>
        body {
            background-color: #cccccc;
        }

        .container {
            margin-top: 150px;

        }

    </style>
</head>
<body>
<div class="container">
    <div class="row">
        <div class="col-md-4 col-md-offset-4">

            <form action="/zhuce/" method="post">
                {% csrf_token %}
                <h3 style="text-align: center">请注册</h3>
                <div class="form-group">
                    <label for="exampleInputEmail1">用户名</label>
                    <input type="text" class="form-control" id="exampleInputEmail1" placeholder="用户名" name="name">
                </div>
                <div class="form-group">
                    <label for="exampleInputPassword1">密码</label>
                    <input type="password" class="form-control" id="exampleInputPassword1" placeholder="密码" name="password">
                </div>
                <div class="checkbox">
                    <label>
                        <input type="checkbox" id="i1"> 我同意 <a href="/xieyi/">Cool公司注册协议</a>
                    </label>
                </div>
                <button type="submit" class="btn btn-primary disabled" id="i2">注册</button>
            </form>
        </div>
    </div>
</div>

<script>
{#  方式一  #}
$('#i1').on('change',function(){                  {#  事件是 click 也可以   #}
            $("#i2").toggleClass("disabled");
        })

{#  方式二 #}
{#$('#aa').on('change',function(){#}
{#            $("#btn").prop('disabled',!$(this).prop('checked'))#}
{#        })#}
</script>
</body>
</html>
zhuce.html
{% extends 'base.html'%}
{% block tt %}
<div class="col-sm-9 col-md-10 main">
            <div class="panel panel-primary">
                <div class="panel-heading">作者信息</div>
                <div class="panel-body">
                    <!-- Button trigger modal -->
                    <a href="/zuozhetianjia/"><button type="button" class="btn btn-primary" data-toggle="modal" data-target="#myModal">
                        添加
                    </button></a>

                    <table class="table table-hover">
{#                    <tr>#}
                        <thead>
                        <th>序号</th>
                        <th>姓名</th>
                        <th>性别</th>
                        <th>电话</th>
                        <th>地址</th>
                        </thead>
<tbody>
    {% for auth in authlist %}
        <tr>
            <td>{{ forloop.counter }}</td>
            <td>{{ auth.name }}</td>
            <td>{{ auth.authdetail.sex }}</td>
            <td>{{ auth.authdetail.tel }}</td>
            <td>{{ auth.authdetail.addr }}</td>

            <td>
                <div class="pull-left">
                <a href="/zuozheshanchu/{{ pub.id }}">
                    <button class="btn btn-danger" >删除</button>
                </a>
                </div>
                <a href="/zuozhebianji/?id={{ pub.id }}">
                    <button class="btn btn-success" style="margin-left: 5px">编辑</button>
                </a>
            </td>
        </tr>
        </tbody>
    {% endfor %}
{% endblock tt %}
zuozhe.html
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <link rel="stylesheet" href="/static/bootstrap-3.3.7/css/bootstrap.min.css"/>
    <script src="/static/jquery-3.2.1.js"></script>
    <script src="/static/bootstrap-3.3.7/js/bootstrap.min.js"></script>
    <style>
        body {
            background-color: #cccccc;
        }

        .container {
            margin-top: 150px;

        }

    </style>
</head>
<body>
<div class="container">
    <div class="row">
        <div class="col-md-4 col-md-offset-4">
            <form action="/login/" method="post">
                {% csrf_token %}
                <h3 style="text-align: center">请登录</h3>
                <div class="form-group">
                    <label for="exampleInputEmail1" class="control-label">用户名</label>
                    <input type="text" class="form-control c1" id="exampleInputEmail1" name="name" placeholder="用户名">
{#                    <span class="help-block"></span>#}
                </div>
                <div class="form-group">
                    <label for="exampleInputPassword1" class="control-label">密码</label>
                    <input type="password" class="form-control c1" id="exampleInputPassword1" name="password" placeholder="密码">
{#                    <span class="help-block"></span>#}
                </div>
                <div style="color: red">{{ s }}</div>
                <input class="btn btn-primary" type="submit" value="提交" id="sb"/>
                <a href="/zhuce/"><input type="button" value="免费注册" class="btn btn-success pull-right"/></a>
                <!--<button type="submit" class="btn btn-primary">Submit</button>-->
            </form>
        </div>
    </div>
</div>

{# 以下为jq代码  输入不能为空的提示 #}

{#<script src="jquery-3.2.1.js"></script>#}
{#    <script src="bootstrap-3.3.7/js/bootstrap.min.js"></script>#}
<!--<script src="abc.js">-->
{#<script>#}
{#    $('.btn').on('click',function(){#}
{#        $('form .form-group').removeClass('has-error');#}
{#        $('form span').text('');#}
{#        $('.c1').each(function(i,v){#}
{#            if($(v).val().length===0){#}
{#                $(v).parent().addClass('has-error');#}
{#                console.log($(v).parent())#}
{#                $(v).next().text($(v).prev().text()+'不能为空');#}
{#                return false#}
{#            }#}
{#        })#}
{#    })#}


{#以下为jq自定义插件-输入不能为空#}
{#//$.kuozhan('#sb')#}
{#</script>#}
</body>

</html>
登录校验.html
import pymysql

pymysql.install_as_MySQLdb()
__init__.py
"""
Django settings for xiangmu01 project.

Generated by 'django-admin startproject' using Django 1.11.6.

For more information on this file, see
https://docs.djangoproject.com/en/1.11/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/1.11/ref/settings/
"""

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '#^b0%&v92lkm34l)&yrw345gqdw^&w_zq$o0bja71uf40#qz=w'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = []


# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'xiangmu01.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, "templates")],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'xiangmu01.wsgi.application'


# Database
# https://docs.djangoproject.com/en/1.11/ref/settings/#databases

# DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#     }
# }

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'xiangmu01',  # 你的数据库名称
        'USER': 'root',  #你的数据库用户名
        'PASSWORD': '963.',  #你的数据库密码
        'HOST': '',  #你的数据库主机,留空默认为localhost
        'PORT': '3306',  #你的数据库端口
    }
}


# Password validation
# https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/1.11/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

TEMPLATE_DIRS = (
    os.path.join(BASE_DIR,  'templates'),
    'app01',
)

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
        },
    },
    'loggers': {
        'django.db.backends': {
            'handlers': ['console'],
            'propagate': True,
            'level': 'DEBUG',
        },
    }
}
settings.py
"""xiangmu01 URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/1.11/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.conf.urls import url, include
    2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^shujichaxun/', views.shujichaxun),
    url(r'^chubanshechaxun/', views.chubanshechaxun),
    url(r'^zuozhechaxun/', views.zuozhechaxun),
    url(r'^shujishanchu/(d+)', views.shujishanchu),
    url(r'^shujitianjia/', views.shujitianjia),
    url(r'^shujibianji/', views.shujibianji),
    url(r'^login/', views.login),
    url(r'^zhuce/', views.zhuce),
    url(r'^middle/', views.middle),
    url(r'^xieyi/', views.xieyi),
    url(r'^xiugaimima/', views.xiugaimima),
    url(r'^zhuxiao/', views.zhuxiao),


]
urls.py

bug:  注册的时候用户名一样的时候也可以注册   ///退出功能未实现   //分页盒子的布局

原文地址:https://www.cnblogs.com/liuwei0824/p/7772690.html