zoukankan      html  css  js  c++  java
  • Django小练习——图书管理系统+用户功能

    urls.py

    from django.contrib import admin
    from django.urls import path
    from book_sys import views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('home/', views.home),
        path('login/', views.login),
        path('register/', views.register),
        path('logined_home/', views.logined_home),
        path('book_home/', views.book_home),
        path('author_home/', views.author_home),
        path('publish_home/', views.publish_home),
    ]

    views.py

    from django.shortcuts import render,HttpResponse
    from book_sys import models
    
    # Create your views here.
    
    def home(request):
        return render(request, 'home.html')
    
    
    def logined_home(request):
        return render(request, 'logined_home.html')
    
    
    def book_home(request):
        return render(request, 'book_home.html')
    
    
    def author_home(request):
        return render(request, 'author_home.html')
    
    
    def publish_home(request):
        return render(request, 'publish_home.html')
    
    
    def login(request):
        if request.method == 'POST':
            username = request.POST.get('username')
            password = request.POST.get('password')
            user_obj = models.User.objects.filter(username=username).first()
            if user_obj:
                if password == user_obj.password:
                    return HttpResponse("登陆成功")
                else:
                    return HttpResponse("密码错误")
            else:
                return HttpResponse("用户不存在")
        return render(request, 'login.html')
    
    
    def register(request):
        if request.method == "POST":
            username = request.POST.get('username')
            password = request.POST.get('password')
            re_password = request.POST.get('re_password')
            if password == re_password:
                user_obj = models.User(username=username, password=password)
                user_obj.save()
                return HttpResponse('注册成功')
            else:
                return HttpResponse('两次密码不一致')
        # 先给用户返回一个注册页面
        return render(request, 'register.html')

    modles.py

    from django.db import models
    
    # Create your models here.
    
    class User(models.Model):
        id = models.AutoField(primary_key=True, verbose_name='主键')
        reg_time = models.DateField()
        username = models.CharField(max_length=32, verbose_name='用户名')
        password = models.CharField(max_length=64, verbose_name='密码')
    
    
    class Book(models.Model):
        title = models.CharField(max_length=32)
        price = models.DecimalField(max_digits=8,decimal_places=2)
        publish_date = models.DateField(auto_now_add=True)
    
    #     # 一对多
        publish = models.ForeignKey(to='Publish', on_delete = models.CASCADE)
    #     # 多对多
        authors = models.ManyToManyField(to='Author')
    #
    #
    class Publish(models.Model):
        name = models.CharField(max_length=32)
        addr = models.CharField(max_length=64)
        email = models.EmailField()
    #
        def __str__(self):
            return '对象:%s'%self.name
    #
    #
    class Author(models.Model):
        name = models.CharField(max_length=32)
        # 一对一
        author_detail = models.OneToOneField(to='AuthorDetail',on_delete = models.CASCADE)
    
    #
    class AuthorDetail(models.Model):
        phone = models.BigIntegerField()
        addr = models.CharField(max_length=64)

    home.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link href="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
        <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
        <script src="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
    
    </head>
    <body>
    <nav class="navbar navbar-inverse">
      <div class="container-fluid">
        <!-- Brand and toggle get grouped for better mobile display -->
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
            <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="/home/">图书管理系统</a>
        </div>
    
        <!-- Collect the nav links, forms, and other content for toggling -->
        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
          <ul class="nav navbar-nav">
            <li class="active"><a href="#">Link <span class="sr-only">(current)</span></a></li>
            <li><a href="#">Link</a></li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
              <ul class="dropdown-menu">
                <li><a href="#">Action</a></li>
                <li><a href="#">Another action</a></li>
                <li><a href="#">Something else here</a></li>
                <li role="separator" class="divider"></li>
                <li><a href="#">Separated link</a></li>
                <li role="separator" class="divider"></li>
                <li><a href="#">One more separated link</a></li>
              </ul>
            </li>
          </ul>
          <form class="navbar-form navbar-left">
            <div class="form-group">
              <input type="text" class="form-control" placeholder="Search">
            </div>
            <button type="submit" class="btn btn-default">Submit</button>
          </form>
          <ul class="nav navbar-nav navbar-right">
            <li><a href="#">Link</a></li>
             {% block login_user %}
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">请先登录 <span class="caret"></span></a>
              <ul class="dropdown-menu">
                <li><a href="#">Action</a></li>
                <li><a href="#">Another action</a></li>
                <li><a href="#">Something else here</a></li>
                <li role="separator" class="divider"></li>
                <li><a href="#">Separated link</a></li>
              </ul>
            </li>
              {% endblock %}
          </ul>
        </div><!-- /.navbar-collapse -->
      </div><!-- /.container-fluid -->
    </nav>
    <div class="container-fluid">
        <div class="row">
            <div class="col-md-3">
                   <div class="list-group">
                      <a href="/home/" class="list-group-item active">
                       首页
                      </a>
    {#                  <a href="/login/" class="list-group-item">登陆</a>#}
    {#                  <a href="/register/" class="list-group-item">注册</a>#}
                      <a href="/book_home/" class="list-group-item">图书列表</a>
                      <a href="/author_home/" class="list-group-item">作者列表</a>
                      <a href="/publish_home/" class="list-group-item">出版社列表</a>
                    </div>
            </div>
            <div class="col-md-9">
                <div class="panel panel-primary">
                  <div class="panel-heading">
                    <h3 class="panel-title">Panel title</h3>
                  </div>
                  <div class="panel-body">
                      {% block content %}
                           <div class="jumbotron">
                              <h1>Hello, world!</h1>
                              <p>...</p>
                              <p><a class="btn btn-primary btn-lg" href="#" role="button">Learn more</a></p>
                            </div>
                      {% endblock %}
                  </div>
                </div>
            </div>
        </div>
    </div>
    </body>

    book_home.html

    {% extends 'home.html' %}
    {% block content %}
        <h1>图书列表内容</h1>
    {% endblock %}

    author_home.html

    {% extends 'home.html' %}
    {% block content %}
        <h1>作者列表内容</h1>
    {% endblock %}

    publish_home.html

    {% extends 'home.html' %}
    {% block content %}
        <h1>出版社列表内容</h1>
    {% endblock %}
  • 相关阅读:
    剑指 Offer 18. 删除链表的节点
    剑指 Offer 15. 二进制中1的个数
    剑指 Offer 11. 旋转数组的最小数字
    剑指 Offer 56
    剑指 Offer 10- II. 青蛙跳台阶问题
    剑指 Offer 10- I. 斐波那契数列
    剑指 Offer 09. 用两个栈实现队列
    剑指 Offer 06. 从尾到头打印链表
    C++ 异常机制
    读《大数据——互联网大规模数据挖掘与分布式处理》
  • 原文地址:https://www.cnblogs.com/heirenxilou/p/13024726.html
Copyright © 2011-2022 走看看