您当前的位置: 首页 >  数据库

嗨学编程

暂无认证

  • 0浏览

    0关注

    1405博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Django学习(4)表单,让数据库更美好

嗨学编程 发布时间:2019-09-17 20:57:16 ,浏览量:0

表单,在HTML中的标签为,在网页中主要负责数据采集功能。我们在浏览网站时,常常会碰到注册账号、账号登录等,这就是表单的典型应用。

在Django学习(2)数据宝库中,我们学习了Django与MySQL数据库的连接;在Django学习(3)模板定制中,我们学习了利用Django的模板将HTML设计与Python代码分离开来。这次,我们将要学习如何利用表单在网页上直接操作MySQL数据库。

我们延续Django学习(2)数据宝库的Book项目,首先新建项目Book,并在Book项目中新建应用books:

cd /home/vagrant/django_project/
django-admin.py startproject Book
cd ./Book
django-admin.py startapp books

在settings.py中添加app,并设置数据库连接为MySQL以及模板的查找路径: 在这里插入图片描述 在books的models.py中定义模型,代码如下:

from django.db import models

class MYBOOK(models.Model):
    name = models.CharField(max_length=200)
    price = models.FloatField()

    def __str__(self):
       return self.name+':'+str(self.price)

并在MySQL中新建数据库Book,然后将Django中的模型与MySQL中的Book数据库连接:

python3 manage.py makemigrations
python3 manage.py migrate

这时会在MySQL中生成books_mybook表格。为了在网页中利用表单操作books_mybook表格,我们写了两个HTML模板,一个是数据插入和查询模板:index.html,一个是查询结果模板:search_res.html。其中index.html模板如下:



    

    

**********************************************

Input name and price of a book:

name: price:

{% if name and price%} alert("Insert into MySQL already!Please check MySQL") {% endif %}

**********************************************

Query the price of a book:

Book name:

**********************************************

search_res.html模板如下:

You searched for: {{ query }}

{% if books %}

Found {{ books|length }} book{{ books|pluralize }}.

    {% for book in books %}
  • Book: {{ book.name }}, Price: {{book.price}}
  • {% endfor %}
{% else %}

No books matched your search criteria.

{% endif %}

有了以上两个模板,我们就有了网页展示的模板。接下来,我们需要创建视图,views.py代码如下:

from django.http import HttpResponse
from django.shortcuts import render_to_response
from books.models import MYBOOK
'''
遇到不懂的问题?Python学习交流群:821460695满足你的需求,资料都已经上传群文件,可以自行下载!
'''
def index(request):
    return render_to_response('index.html')

def insert(request):
    NAME = request.GET['name']
    PRICE = float(request.GET['price'])
    MYBOOK.objects.create(name=NAME, price=PRICE)
    return render_to_response('index.html', {'name':NAME, 'price': PRICE})

def query(request):
    query = request.GET['book']
    books = MYBOOK.objects.filter(name__icontains = query)
    return render_to_response('search_res.html', {'query':query, 'books': books}

在上述视图中,index()加载原始的index.html网页,insert()则插入书籍的名称和价格信息,提交后会弹出对话框,显示“Insert into MySQL already!Please check MySQL”,query()则显示查询结果,该查询为正则查询,返回所有包含‘book’参数的书籍的名称和价格,暂时不考虑书籍名称不存在的情形。

最后,我们只需要设置好url.py文件,并启动server服务器即可。其中urls.py代码如下:

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^form', 'books.views.index'),
    url(r'^insert', 'books.views.insert'),
    url(r'^query', 'books.views.query'),
]

启动服务器python3 manage.py runserver 8000,在浏览器中输入localhost:8000/form,网页显示如下: 在这里插入图片描述 首先,我们先插入第一本书的信息,如下网页: 在这里插入图片描述 弹出的消息框如下: 在这里插入图片描述 这样我们就完成了第一本书的插入。按照此步骤,我们再插入9本书,它们分别为:[(‘Learning Pyspark’,35), (‘Dive into Scala’, 36), (‘Think in Java’, 46), (‘An introduction to Python’,35),(‘Learning Pandas’,24), (‘Learn Python in 7 Days’,28),(‘Python GUI Programming Cookbook’,38),(‘Python Data Structures and Algorithms’,45),(‘Python Machine Learning By Example’,50)].在MySQL中查看,表格如下: 在这里插入图片描述 这样就插入了十条记录。然后我们在刚才的网页进行查询,页面如下: 在这里插入图片描述 点击查询价格按钮,显示的页面如下: 在这里插入图片描述 搜索效果还是可以的嘛~~

这样我们就利用表单(form)完成了在网页层面对数据库的操作,所以说,表单,让数据库更美好~~

关注
打赏
1663681728
查看更多评论
立即登录/注册

微信扫码登录

0.0516s