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中的reduce内建函数使用方法指南
Aug 31 Python
python获得文件创建时间和修改时间的方法
Jun 30 Python
Python 如何访问外围作用域中的变量
Sep 11 Python
Python获取当前页面内所有链接的四种方法对比分析
Aug 19 Python
python使用正则表达式的search()函数实现指定位置搜索功能
Nov 10 Python
Python实现生成随机数据插入mysql数据库的方法
Dec 25 Python
Python动刷新抢12306火车票的代码(附源码)
Jan 24 Python
想学python 这5本书籍你必看!
Dec 11 Python
Django REST Framework之频率限制的使用
Sep 29 Python
500行python代码实现飞机大战
Apr 24 Python
python遍历路径破解表单的示例
Nov 21 Python
python 遍历磁盘目录的三种方法
Apr 02 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返回字符串中所有单词的方法
2015/03/09 PHP
Thinkphp+smarty+uploadify实现无刷新上传
2015/07/30 PHP
TNC vs IO BO3 第一场2.13
2021/03/10 DOTA
经典海量jQuery插件 大家可以收藏一下
2010/02/07 Javascript
JavaScript 对象的属性和方法4种不同的类型
2010/03/19 Javascript
写js时遇到的一些小问题
2010/12/06 Javascript
用Jquery重写windows.alert方法实现思路
2013/04/03 Javascript
javascript不可用的问题探究
2013/10/01 Javascript
JS设置获取cookies的方法
2014/01/26 Javascript
jQuery实现可编辑的表格实例讲解(2)
2015/09/17 Javascript
AngularJS中的指令全面解析(必看)
2016/05/20 Javascript
利用JS屏蔽页面中的Enter按键提交表单的方法
2016/11/25 Javascript
jQuery实现table中两列CheckBox只能选中一个的示例
2017/09/22 jQuery
clipboard.js在移动端复制失败的解决方法
2018/06/13 Javascript
Vue实战教程之仿肯德基宅急送App
2019/07/19 Javascript
vue实现带过渡效果的下拉菜单功能
2020/02/19 Javascript
原生js实现密码强度验证功能
2020/03/18 Javascript
ES6 十大特性简介
2020/12/09 Javascript
[03:46]显微镜下的DOTA2第七期——满血与残血
2014/06/20 DOTA
[42:56]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
python中defaultdict的用法详解
2017/06/07 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
2018/04/26 Python
利用Python如何制作好玩的GIF动图详解
2018/07/11 Python
Linux系统(CentOS)下python2.7.10安装
2018/09/26 Python
python如何制作缩略图
2019/04/30 Python
Python中sorted()排序与字母大小写的问题
2020/01/14 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
浅谈Django前端后端值传递问题
2020/07/15 Python
Python项目打包成二进制的方法
2020/12/30 Python
医学护理毕业生自荐信
2013/11/07 职场文书
《花瓣飘香》教学反思
2014/04/15 职场文书
2015年公务员个人工作总结
2015/04/24 职场文书
拾金不昧表扬信怎么写
2015/05/04 职场文书
Oracle11g R2 安装教程完整版
2021/06/04 Oracle
WCG2010 星际争霸决赛 Flash vs Goojila 1 星际经典比赛回顾
2022/04/01 星际争霸