图书管理系统(一):出版社列表增加、删除和编辑

  • 步骤一:前提准备
  • 步骤二:创建出版社列表
  • 步骤三:增加出版社
  • 步骤四:删除出版社
  • 步骤五:编辑出版社
  • 项目源码
 
步骤一:前提准备

1.安装django:    pip install -i http://pypi.douban.com/simple/ django==1.11.11
2.创建一个django项目:    Django-admin startproject 项目名(mysite)
3.创建一个app:    python3 manage.py startapp 名字(publisher)
4.对项目进行初始化设置:
#settings.py
 
INSTALLED_APPS = [
    'app_publisher'    #把新建app的名字加进去
]
 
MIDDLEWARE = [
    #'django.middleware.csrf.CsrfViewMiddleware',    #注释掉这一行
]
 
TEMPLATES = [
{
    'DIRS': [os.path.join(BASE_DIR, 'templates')],    #在和html相关的设置中,加入路径,base_dir是项目的根目录,templates是专门设置的放html的文档
}
]
 
#修改数据库的设置
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'NAME': 'mysite',    #新建的数据库
        'USER': 'root',
        'PASSWORD': 'ren666666'
    }
}
 
STATIC_URL = '/static/'
#在这里添加css,js等静态文件的目录
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]
#app_publisher/models.py
 
#给数据库publisher添加表id和name
class publisher(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(null=False, max_length=20)
#mysite/mysite/__init__.py
 
#启动pymysql,告诉django用pymysql来代替默认的MySQLdb
import pymysql
pymysql.install_as_MySQLdb()
5.数据库设置完成后,运行命令
python3 manage.py makemigrations    #用小本本将models.py里面的改动记录下来,记录到app1/migrations文件夹下面
python3 manage.py migrate    #把改动翻译成SQL语句去数据库执行
至此,准备工作完成!
 
步骤二:创建出版社列表

1.写入函数:
#mysite/urls.py
 
from app_publisher import views
 
urlpatterns = [
    url(r'publisher_list', views.publisher_list),
]
#app_publisher/views.py
 
from django.shortcuts import render, HttpResponse, redirect
from app_publisher import models
 
def publisher_list(request):
    ret = models.publisher.objects.all().order_by('id')    #获取数据库中的数据,并赋值为ret
    return render(request, 'publisher_list.html', {'publisher_list': ret})    把ret(数据库中的数据)赋值给publisher_list,然后将publisher_list传到publisher_list.html中
2.这个时候就需要一个显示列表的html网页了
#templates.py
 
<!DOCTYPE html>
<html>
<head>
    <title>出版社列表</title>
</head>
<body>
    <a href="/add_publisher/">增加出版社</a>
    <table border='1'>
        <tr>
            <th>序号</th>
            <th>id</th>
            <th>出版社</th>
        </tr>
        #固定格式,for循环来获取传入的数据库中的数据
        {% for publisher in publisher_list %}
        <tr>
            <td>{{ forloop.counter }}</td>    #获得自动的序列
            <td>{{ publisher.id }}</td>
            <td>{{ publisher.name }}</td>
        </tr>
        {% endfor %}
    </table>
</body>
</html>
 
步骤三:设置增加出版社的功能

1.写入函数
urlpatterns = [
    url(r'^add_publisher', views.add_publisher),
]
def add_publisher(request):
    error_msg = ''
    if request.method == 'POST':
        ret = request.POST.get('add_name', None)
        if ret:
            models.publisher.objects.create(name=ret).save()    #将增加的数据保存到数据库中
            return redirect('/publisher_list/')
        else:
            error_msg = '出版社名字不能为空!'
    return render(request, 'add_publisher.html', {'error': error_msg})
2.写入页面:
#templates/add_publisher.html
 
<!DOCTYPE html>
<html>
<head>
    <title>增加出版社</title>
</head>
<body>
    <form action="/add_publisher/" method="post">
        <input type="text" name="add_name"><br>
        <input type="submit" value="提交">
    </form>
    <p>{{ error }}</p>
</body>
</html>
 
 

步骤四:删除出版社
1.写入函数:
url(r'^delete_publisher/', views.delete_publisher),
def delete_publisher(request):
    ret = request.GET.get('id', None)
    if ret:
        models.publisher.objects.get(id=ret).delete()
        return redirect('/publisher_list/')
    else:
        return HttpResponse('要删除的数据不存在')
2.在publisher_list.html文件中增加删除内容:
<!DOCTYPE html>
<html>
<head>
    <title>出版社列表</title>
</head>
<body>
    <a href="/add_publisher/">增加出版社</a>
    <table border='1'>
        <tr>
            <th>序号</th>
            <th>id</th>
            <th>出版社</th>
            <th>操作</th>
        </tr>
        {% for publisher in publisher_list %}
        <tr>
            <td>{{ forloop.counter }}</td>
            <td>{{ publisher.id }}</td>
            <td>{{ publisher.name }}</td>
            <td><a href='/delete_publisher/?id={{ publisher.id }}'>删除</a></td>
        </tr>
        {% endfor %}
    </table>
</body>
</html>
 
步骤五:编辑出版社

1.写入函数:
url(r'^edit_publisher/', views.edit_publisher),
def edit_publisher(request):
        ret = request.GET.get('id', None)
        if ret:
            edit_data = models.publisher.objects.get(id=ret)
            return render(request, 'edit_publisher.html', {'publisher': edit_data})
        new_name = request.POST.get('edit_name', None)
        ret = request.POST.get('id', None)
        if ret:
            publisher = models.publisher.objects.get(id=ret)
            publisher.name = new_name
            publisher.save()
            return redirect('/publisher_list/')
2.在publisher_list.html文件中增加修改内容:
<td><a href='/edit_publisher/?id={{ publisher.id }}'>修改</a></td>
3.写edit_publisher.html文件:
<!DOCTYPE html>
<html>
<head>
    <title>修改出版社</title>
</head>
<body>
    <h1>修改出版社</h1>
    <form action="/edit_publisher/" method="post">
        <input type="text" name='id' value="{{ publisher.id}}" style='display:none'>
        <input type="text" name="edit_name" value="{{ publisher.name }}">
 
        <input type="submit" value="提交">
    </form>
    <p>{{ error }}</p>
</body>
</html>
 
posted @ 2018-07-01 18:47  小隐于林i  阅读(274)  评论(0编辑  收藏  举报