python+Django+pycharm+mysql 搭建首个web项目详解


Posted in Python onNovember 29, 2019

本文实例讲述了python+Django+pycharm+mysql 搭建首个web项目。分享给大家供大家参考,具体如下:

前面的文章记录了环境搭建的过程,本节记录首个web项目调试

首先检查安装的模块,输入dos命令 pip list, 会显示已安装的模块,看是否有Django,PyMySQL模块

C:\Users\Administrator\PycharmProjects>pip list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to di
sable this warning.
Django (2.0.1)
pip (9.0.1)
PyMySQL (0.8.0)
pytz (2017.3)
setuptools (28.8.0)

1、然后开始创建项目: 运行PyCharm,  菜单选File->New project 弹出对话框

python+Django+pycharm+mysql 搭建首个web项目详解

在对话框中左侧选Django ,项目名称修改为mysite,点Create按钮创建

然后点击运行,即可看到web项目启动,并提示 Starting development server at http://127.0.0.1:8000/

点击链接即可在浏览器看到默认网页,创建成功

2. 创建APP

在每个django项目中可以包含多个APP,相当于一个大型项目中的分系统、子模块、功能部件等等,相互之间比较独立,但也有联系。所有的APP共享项目资源。

在pycharm下方的terminal终端中输入命令:

python manage.py startapp cmdb

这样就创建了一个叫做cmdb的APP,django自动生成“cmdb”文件夹。

3.  修改mysite\urls.py文件,修改后以下:

from django.urls import path
from cmdb import views
from django.conf.urls import url
urlpatterns = [
#  path('admin/', admin.site.urls),
url(r'^index/',views.index)
]

4.修改cmdb\views.py文件

from django.shortcuts import render
from django.shortcuts import HttpResponse
import pymysql
# Create your views here.
# 打开数据库连接
db = pymysql.connect(host="192.168.1.100", user="root",
           password="abc123", db="testdb", port=3306)
# 使用cursor()方法获取操作游标
cur = db.cursor()
def index(request):
  start = 10
  limit = 10
  if request.method == "POST":
    start = request.POST.get("start", None)
    limit = request.POST.get("limit", None)
  sql = "SELECT * FROM `siterecord` WHERE 1 limit %s,%s" % (start, limit)
  try:
    cur.execute(sql) # 执行sql语句
    results = cur.fetchall() # 获取查询的所有记录
  except Exception as e:
    raise e
  return render(request, "index.html", {"results":results})

主要是连接数据库,根据网页界面输入的start,limit查询数据库记录,并把记录返回给页面输出

5.创建template\index.html文件

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script type="text/javascript" src="/static/js/test.js"></script>
</head>
用户输入
<hr>
<form action="/index/" method="post">
 开始: <input type="text" name="start"/><br>
 条数:<input type="text" name="limit"/><br>
<input type="submit" value="提交"><br>
</form>
<hr>
<h1>访问记录展示</h1>
<table border="1">
 <thead>
 <th>id</th>
 <th>softid</th>
 <th>visittime</th>
 <th>ip</th>
 </thead>
  <tbody>
  {% for row in results %}
     <tr>
    <td>{{ row.0 }}</td>
    <td>{{ row.1 }}</td>
    <td>{{ row.2 }}</td>
    <td>{{ row.3 }}</td>
  <tr>
{% endfor %}
  </tr>
   </tbody>
</table>
</body>
</html>

该网页提示输入参数,并把查询数据库结果用表格展示出来,此外,为了测试静态文档目录,引入了一个js文档

6.增加static目录,存放img、css、js等静态文档

与cmdb同级建立目录static,目录下建imgs,css,js三个子目录

python+Django+pycharm+mysql 搭建首个web项目详解

然后修改mysite\setting.py文件,增加以下内容

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.0/howto/static-files/
STATIC_URL = '/static/'
STATICFILES_DIRS=(
os.path.join(BASE_DIR, 'static'),
)

这样index.html文档中就可以引用图片,css,js等静态文档了

7.重启django服务器,在浏览器栏输入

http://127.0.0.1:8000/index/

注意后面/index/不能缺少

如果出现跨域禁止,修改mysite\setting.py,注释掉以下这行

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',
]

'django.middleware.csrf.CsrfViewMiddleware',这行注释掉即可

8.看到成果了

python+Django+pycharm+mysql 搭建首个web项目详解

网页根据你输入的开始和条数展示数据库查询记录

注意本项目的windowsserver2012上并没有安装mysql数据库,查询连接的是另外一台电脑上的linux系统中的mysql.

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

Python 相关文章推荐
python实现多线程暴力破解登陆路由器功能代码分享
Jan 04 Python
Linux上安装Python的PIL和Pillow库处理图片的实例教程
Jun 23 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
Jul 11 Python
python中Switch/Case实现的示例代码
Nov 09 Python
python使用turtle库与random库绘制雪花
Jun 22 Python
Python从函数参数类型引出元组实例分析
May 28 Python
Django之PopUp的具体实现方法
Aug 31 Python
python NumPy ndarray二维数组 按照行列求平均实例
Nov 26 Python
win10安装python3.6的常见问题
Jul 01 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
Sep 01 Python
pandas map(),apply(),applymap()区别解析
Feb 24 Python
Python如何解决secure_filename对中文不支持问题
Jul 16 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
Nov 29 #Python
python jenkins 打包构建代码的示例代码
Nov 29 #Python
numpy创建单位矩阵和对角矩阵的实例
Nov 29 #Python
python中从for循环延申到推导式的具体使用
Nov 29 #Python
python 实现矩阵按对角线打印
Nov 29 #Python
python之列表推导式的用法
Nov 29 #Python
python 实现方阵的对角线遍历示例
Nov 29 #Python
You might like
php MessagePack介绍
2013/10/06 PHP
php选择排序法实现数组排序实例分析
2015/02/16 PHP
浅析PHP关键词替换的类(避免重复替换,保留与还原原始链接)
2015/09/22 PHP
解读PHP中上传文件的处理问题
2016/05/29 PHP
ThinkPHP实现附件上传功能
2017/04/27 PHP
PHP实现通过strace定位故障原因的方法
2018/04/29 PHP
在线游戏大家来找茬II
2006/09/30 Javascript
参考:关于Javascript中实现暂停的几篇文章
2007/03/04 Javascript
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
两个数组去重的JS代码
2013/12/04 Javascript
jquery做的一个简单的屏幕锁定提示框
2014/03/26 Javascript
JavaScript怎么判断图片是否加载完成以便获取其尺寸
2014/05/08 Javascript
javascript实现一个数值加法函数
2015/06/26 Javascript
深入剖析javascript中的exec与match方法
2016/05/18 Javascript
原生js的数组除重复简单实例
2016/05/24 Javascript
chrome下判断点击input上标签还是其余标签的实现方法
2016/09/18 Javascript
使用snowfall.jquery.js实现爱心满屏飞的效果
2017/01/05 Javascript
JS中的数组转变成JSON格式字符串的方法
2017/05/09 Javascript
认识less和webstrom的less配置方法
2017/08/02 Javascript
jQuery实现用户信息表格的添加和删除功能
2017/09/12 jQuery
layui前端框架之table表数据的刷新方法
2018/08/17 Javascript
ES6 Promise对象的应用实例分析
2019/06/27 Javascript
element-ui table行点击获取行索引(index)并利用索引更换行顺序
2020/02/27 Javascript
Python中__init__.py文件的作用详解
2016/09/18 Python
Python中字符串格式化str.format的详细介绍
2017/02/17 Python
用pandas按列合并两个文件的实例
2018/04/12 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
python 用下标截取字符串的实例
2018/12/25 Python
python 实现图片上传接口开发 并生成可以访问的图片url
2019/12/18 Python
浅谈django框架集成swagger以及自定义参数问题
2020/07/07 Python
python 用opencv实现霍夫线变换
2020/11/27 Python
Forever 21美国官网:美国标志性快时尚品牌
2017/02/20 全球购物
给水排水工程专业毕业生推荐信
2013/10/28 职场文书
乔迁之喜主持词
2014/03/27 职场文书
农村党支部书记党群众路线四风问题整改措施
2014/09/26 职场文书
晶体管单管来复再生式收音机
2021/04/22 无线电