django+mysql实现网页查询

实现网页查询并返回结果,将查询关键字保存至数据库

环境:

vscode 编辑器

python3.8.2

djangoVersion: 2.0

pip list

Package Version

----------------- -------

astroid 2.4.2

colorama 0.4.3

Django 2.0

isort 4.3.21

lazy-object-proxy 1.4.3

mccabe 0.6.1

pip 20.1.1

pylint 2.5.3

PyMySQL 0.9.3

pytz 2020.1

setuptools 41.2.0

six 1.15.0

toml 0.10.1

wrapt 1.12.1

1、创建视图,添加映射

mkdir projects

cd projects

python -m venv .venv_mysql

cd .venv_mysql/scripts

activate ## 激活虚拟环境

pip install django==2.0## 高版本不支持pymysql,如果能安装上mysqlclient也可以使用高版本的

django-admin startproject pro_mysql

cd pro_mysql

python manage.py startapp app_mysql

## 1、创建两个视图app_mysql/views.py

from django.shortcuts import render

# Create your views here.

def search(request):

return render(request,"app_mysql/search.html",{})

def handle(request):

return render(request,"app_mysql/resp.html",{})

## 2、修改pro/setting.py

INSTALLED_APPS = [

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'app_mysql',

]

# 3、添加映射

## 3.1 子路由app/urls.py

from django.contrib import admin

from django.urls import path

from . import views

app_name = 'app_mysql' ## 命名空间

urlpatterns = [

path('', views.search,name='search'),

path('handle/', views.handle,name='handle'),

]

## 3.2 总路由pro/urls.py

from django.contrib import admin

from django.urls import path,include

urlpatterns = [

path('admin/', admin.site.urls),

path('', include('app_mysql.urls')),

]

2、添加页面框架并测试django

# 1、app_mysql/templates/app_mysql/search.html

搜索

hello world

# 2、app_mysql/templates/app_mysql/resp.html

返回内容

命令行检查django是否安装成功

python manage.py runserver

3、数据库mysql安装

下载mysql安装包,解压到安装目录,注意目录不要包含中文

①下转到mysql的bin目录下:cmd命令行:cd mysql..\bin

②安装mysql的服务:mysqld --install 或者mysqld –remove ,mysqld remove MySQL,删除data文件夹

③初始化mysql,在这里,初始化会产生一个随机密码,记住这个密码,后面会用到(mysqld --initialize --console)

mysqld --initialize --console

-Knhlwhhj1wV

④开启mysql的服务(net start mysql)、停服务net stop mysql

⑤登录验证,mysql是否安装成功!

mysql -u root -p 密码提示输入:root110

修改密码:alter user 'root'@'localhost' identified by 'root110';

exit

mysql -u root -p 密码提示输入:root110

设置系统的全局变量:

①点击"我的电脑"-->"属性"-->''高级系统设置''-->''环境变量''

4、navicat 连接数据库

创建连接

mysql

app_mysql

localhost

3306

root

root110

创建数据库

数据库名:mysql-demo1

字符集:utf8mb4

排序规则:空着

创建表shop,text

shop表 和 text表可使用语法生成

5、vscode设置数据库连接

## 设置pro_mysql/__init__.py

## 命令行先安装pymysql

pip install pymysql

# import pymysql # 导入第三方模块,用来操作mysql数据库

import pymysql

pymysql.install_as_MySQLdb()

## 设置pro_mysql/settings.py

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.mysql',

'NAME': 'mysql-demo1',

'HOST': '127.0.0.1',

'PORT': 3306,

'USER':'root',

'PASSWORD':'root110'

}

}

## 命令行查看数据库细节

python manage.py inspectdb

## 生成models.py文件

python manage.py inspectdb > models.py

## 将models.py移动到app下

## 修改models.py为可写

class Meta:

managed = True ## True为可写

db_table = 'text'

6、搜索网页内容编写

## 1、编写app/template/name1/search.html

搜索

{% csrf_token %}

## 注意属性之间没有逗号

7、接收数据,返回数据

## 1、app_mysql/views.py中编写接收数据函数,将数据保存到数据库

from . import service

def handle(request):

text = request.POST["搜索内容"] ## 对应search.html中

service.addText(text) ## 将搜索的值存入数据库

## app_mysql/service.py 新建文件,存储到数据库功能的文件

from .models import Text

def addText(text):

text1 = Text(text=text)

text1.save()

## 2、返回数据函数

def handle(request):

text = request.POST["搜索内容"] ## 对应search.html中

service.addText(text) ## 将搜索的值存入数据库

db = Shop.objects.all() ## 将数据库的每条数据内容变为可操作的对象

po_list=[] ## 创建列表

for i in db:

if text in i.title:

po_list.append(i.content) ## 若传入的text值在shop.title中,将shop.content加入列表

return render(request,"app_mysql/resp.html",{"resp":po_list}) ## 将列表值返回给resp.html,使用resp接收

8、搜索结果返回网页编写

返回内容

{% for i in resp %}

{{ i }}

{% endfor%}

9、测试结果

python manage.py runserver

网页打开http://127.0.0.1:8000/

输入表单内容,并提交

跳转到http://127.0.0.1:8000/handle并有数据返回

查看Navicat数据库中text表中是否保存有关键字

10、相关问题

提示需要安装更高版本的mysqlclient时,可考虑降低django版本,原因可baidu

提示vscode会提示出现Class “xxx” has no ‘objects’ member错误:

不影响使用

pip install pylint-django

settings.json中增加以下语句

{

"python.pythonPath": ".venv\\Scripts\\python.exe",

"python.linting.pylintArgs": ["--generate-members"]

}

完整代码

app_mysql

views.py

from django.shortcuts import render

from . import service

from app_mysql.models import Shop

# Create your views here.

from django.shortcuts import render

# Create your views here.

def search(request):

return render(request,"app_mysql/search.html",{})

def handle(request):

text = request.POST["搜索内容"] ## 对应search.html中

service.addText(text) ## 将搜索的值存入数据库

db = Shop.objects.all() ## 将数据库的每条数据内容变为可操作的对象

po_list=[] ## 创建列表

for i in db:

if text in i.title:

po_list.append(i.content) ## 若传入的text值在shop.title中,将shop.content加入列表

return render(request,"app_mysql/resp.html",{"resp":po_list}) ## 将列表值返回给resp.html,使用resp接收

urls.py

from django.contrib import admin

from django.urls import path

from . import views

app_name = 'app_mysql' ## 命名空间

urlpatterns = [

path('', views.search,name='search'),

path('handle/', views.handle,name='handle'),

]

modles.py

# This is an auto-generated Django model module.

# You'll have to do the following manually to clean this up:

# * Rearrange models' order

# * Make sure each model has one field with primary_key=True

# * Make sure each ForeignKey has `on_delete` set to the desired behavior.

# * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table

# Feel free to rename the models, but don't rename db_table values or field names.

from django.db import models

class Shop(models.Model):

id = models.IntegerField(primary_key=True)

title = models.CharField(max_length=255, blank=True, null=True)

content = models.CharField(max_length=255, blank=True, null=True)

class Meta:

managed = True

db_table = 'shop'

class Text(models.Model):

id = models.IntegerField(primary_key=True)

text = models.TextField(blank=True, null=True)

class Meta:

managed = True

db_table = 'text'

service.py

from .models import Text

## 存储到数据库功能的文件

def addText(text):

text1 = Text(text=text)

text1.save()

seach.html

搜索

{% csrf_token %}

resp.html

返回内容

{% for i in resp %}

{{ i }}

{% endfor%}

python制作查询网页_django+mysql实现网页查询相关推荐

  1. java mysql 多表查询_解析Mysql多表查询的实现

    查询是数据库的核心,下面就为您介绍Mysql多表查询时如何实现的,如果您在Mysql多表查询方面遇到过问题,不妨一看. Mysql多表查询: CREATE TABLE IF NOT EXISTS co ...

  2. mysql分组查询和子查询语句_6.MySQL分组聚合查询,子查询

    自己的MySQL阅读笔记,持续更新,直到看书结束. 数据库技术可以有效帮助一个组织或者企业科学.有效的管理数据,也是现在很多企业招聘数据分析师的必备要求之一. 大家如果看过MySQL的书,也可以看我的 ...

  3. mysql 4 中文模糊查询_解决MySQL中文模糊查询问题

    解决MySQL中文模糊查询问题: 我们在MySQL中进行中文模糊查询时,经常会返回一些与之不相关的记录,比如查找 "%a%" 时,返回的可能有中文字符,却没有 a 字符存在.对于此 ...

  4. mysql教程多表查询_解析Mysql多表查询的实现

    查询是数据库的核心,下面就为您介绍Mysql多表查询时如何实现的,如果您在Mysql多表查询方面遇到过问题,不妨一看. Mysql多表查询: CREATE TABLE IF NOT EXISTS co ...

  5. flask如何查询mysql_bootstrap+flask+mysql实现网站查询

    之前那篇文章是flask+redis的,如果用flask+mysql怎么实现呢? 创建数据库:CREATE DATABASE `web12306`  DEFAULT CHARACTER SET utf ...

  6. mysql前一天的数据_mysql查询前一天数据-mysql根据时间查询前一天数据-吾爱编程网...

    今天一朋友说有个需求是mysql查询前一天的数据,然后进行数据同步,接下来吾爱编程为大家介绍一下关于mysql根据时间查询前一天数据的方法,有需要的小伙伴可以参考一下: 1.date格式:select ...

  7. mysql中文模糊查询_解决MySQL中文模糊查询问题

    解决MySQL中文模糊查询问题: 我们在MySQL中进行中文模糊查询时,经常会返回一些与之不相关的记录,比如查找%a%时,返回的可能有中文字符,却没有a字符存在.对于此问题目前发现一种方法可以很方便解 ...

  8. mysql 查询语句 in,Mysql IN语句查询

    语法: WHERE column IN (value1,value2,...) WHERE column NOT IN (value1,value2,...) 1.in 后面是记录集,如: selec ...

  9. orcle mysql 查询_Oracle与Mysql的高级查询与难点sql

    一.连接查询 1. 内连接 内连接用于返回满足连接条件的所有记录.默认情况下,在执行连接查询时如果没有指定任何连接操作符,那么这些连接查询都属于内连接. Sql 代码 1. SELECT a.dnam ...

最新文章

  1. 【bzoj1444】[Jsoi2009]有趣的游戏 AC自动机+矩阵乘法
  2. 华为2018届校招技术岗笔试题及个人解答
  3. linux下文件无法删除不能编辑
  4. wsl设置c盘自动挂载到wsl中的/c/目录下
  5. CodeDom Assistant CodeDom的强大工具, 有些BUG修正了下,发到CodePlex,大家有需要的可以看看...
  6. 如何在CentOS / RHEL上使用yum命令
  7. 抽取类的#技巧#成员变量最可能
  8. 基类和派生类的构造函数,隐式调用与显式调用
  9. harmonyos2.0刷机包,鸿蒙harmony os 2.0刷机包|鸿蒙harmony os 2.0系统刷机包 v1.021-520下载站...
  10. 是HTML+CSS的学习笔记捏
  11. c语言中常用运算符号
  12. 小游戏公司该如何应对网络攻击?
  13. linux网卡team0,team
  14. android 时间大小排序,android collection.sort()根据时间排序list
  15. Python-pygsheets模块(读写Google谷歌文档)
  16. python爬虫案例:抓取网易新闻
  17. 告诉你怎么编写一个最简单的单片机程序
  18. QQ引流脚本,QQ扩列引流脚本实操演示
  19. 考验逻辑思维能力的软件_23个经过时间考验的应用程序,可以管理您的远程软件开发团队...
  20. DataFountain-图书推荐系统

热门文章

  1. 如何使用Keras和TensorFlow建立深度学习模型以预测员工留任率
  2. 全球各国IP地址数Top10:中国拥有3.31亿居第二
  3. Mac打开Excel强制grant access
  4. 买汽车票的有什么手机软件?常乘汽车的朋友必备
  5. NLP —— 文本预处理
  6. 思科路由器ospf多区域配置
  7. uniapp,vue中的身份证格式校验
  8. 后台开发 (2 )---基础知识
  9. initialization from incompatible pointer type [-Werror=incompatible-pointer-types]
  10. 11 个对开发有帮助的 JS 技巧,进收藏夹当小词典吧!