环境介绍

2016-07-2513:32:26

name  value  comment
OS win10 操作系统
python python3.4 python主程序
IDE pycharm:  201.2 python IDE集成开发环境
框架 django:  1.11 web开发框架,类似与Struts(JAVA)
DB mysql: 5.5 (在centos 上使用二进制安装,你可以直接安装在win10上面)    ----- 一款nc的开源数据库
connector PyMySQL python connector

作者一路飘来的坑

这就是自己探索的代价,一个小问题都可能停滞1天,或者2天,或者一周

但是,这就是探索的乐趣所在

  • pycharm 无法创建django project,只能创建pure python

    •   因为pycharm的community版本没有,需要下载professional版本,要注册码,自己百度搞定
  • python死活连接不上mysql   ----  django内置了sqlite,无需安装,直接使用,但是生产环境一般还是使用mysql,所以这个问题必须解决
    •   需要再windows上下载一个DBdriver,我的理解就是一个客户端去驱动连接数据库,python不能直接连接,毕竟db认sql语言,不认识python对吧
    • 看介绍:可以安装mysqlclient,connector/python,其实都有问题,因为python3.4太新了(20160725),使用pymysql代替

软件下载

  1. python: python3.4      www.python.org  这个如果都找不到就不要学python了
  2. pycharm:  2016.2        http://www.jetbrains.com/pycharm/download/#section=windows  这个注意,请下载 professional 版本
  3. django:  1.11              https://www.djangoproject.com/download/      可以源码安装,也可以pip 安装
  4. mysql: 5.5(在centos 上使用二进制安装,你可以直接安装在win10上面)
  5. connector: PyMySQL    git clone https://github.com/PyMySQL/PyMySQL  如果不熟悉git,可以直接打开后面的网址在网页端下载

软件安装

python

  下一步,下一步,一下到底,安装位置作者放在了   C:\Python34

pytharm

  下一步,下一步,一下到底

django

  方式1   将源代码解压,放到C盘下面吧-----win+r-----cmd---cd c:\dj  ---- python setup.py

  方式2    ---win+r-----cmd-----pip install django=1.9.2   建议安装这个版本(20160725)

mysql5.5

  方式1 下载windows版本的installer ,一下到底

  方式2  使用centos6.5,然后下载bin版本的安装(作者采用的方式)

PyMySQL

  安装方式和django差不多,进入windows的cmd界面,cd到软件解压目录,然后 python setup.py install

django和pymysql都会安装下面的目录

C:\Python34\Lib\site-packages

创建工程

..1 new---new project

建立好的工程目录类似这个样子

这里可以再多建立几个APP

到现在为止基本的矿机已经完成了,恭喜我自己

..2 让django跑起来

点击工具栏的run

然后在本地打开浏览器输入:    http://127.0.0.1:8000/admin

没错,你就成功了,这个系统已经跑起来了,并且你看见了django非常强大的自动生成的一个后台管理界面

..3 让django连接上数据库mysql

..3.1 常见数据库的model

  1. class UserInfo(models.Model):
  2. name = models.CharField(max_length=32)
  3. email = models.CharField(max_length=32)
  4. comment = models.CharField(max_length=32)
  5. age = models.IntegerField()
  6. password = models.CharField(max_length=32,default="")
  7.  
  8. # def __str__(self):
  9. # s = {"id": self.id, "name": self.name, "email": self.email}
  10. # return s
  11. def __str__(self):
  12. return self.name

projectname/appname/models.py

..3.2 配置数据库连接

/projectname/settings.py

  1. DATABASES = {
  2. 'default': {
  3. 'ENGINE': 'django.db.backends.mysql',
  4. 'NAME': 'django_db',
  5. 'USER': 'root',
  6. 'PASSWORD': '',
  7. 'HOST': '192.168.202.104',
  8. 'PORT': '',
  9. }
  10. }
    ..3.3 初始化安装你的app
    注意后面一定要有逗号,app01 and app02 就是作者自己建立的两个app 我使用app02,稍后你可以看见设置
  1. INSTALLED_APPS = [
  2. 'django.contrib.admin',
  3. 'django.contrib.auth',
  4. 'django.contrib.contenttypes',
  5. 'django.contrib.sessions',
  6. 'django.contrib.messages',
  7. 'django.contrib.staticfiles',
  8. 'app01',
  9. 'app02',
  10. ]

..3.4 在数据库中建表

manage.py这个时候可以登场了

使用pycharm提供的terminal

python manage.py makemigrations

python manage.py migrate

如果一切正常,你已经在数据库中建表格了,如果有意外,你可以在数据库中先建好db,然后使用这两条命令插入表

..3.5 编写代码对数据库进行增删改查,使用ORM

..3.5.1

  1. """first_django_project URL Configuration
  2.  
  3. The `urlpatterns` list routes URLs to views. For more information please see:
  4. https://docs.djangoproject.com/en/dev/topics/http/urls/
  5. Examples:
  6. Function views
  7. 1. Add an import: from my_app import views
  8. 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
  9. Class-based views
  10. 1. Add an import: from other_app.views import Home
  11. 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
  12. Including another URLconf
  13. 1. Import the include() function: from django.conf.urls import url, include
  14. 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
  15. """
  16. from django.conf.urls import url,include
  17. from django.contrib import admin
  18. from app01 import views
  19.  
  20. urlpatterns = [
  21. url(r'^admin/', admin.site.urls),
  22. url(r'^info/', views.info),
  23. url(r'^home/(\d+)(.*)', views.handle_args),
  24. url(r'^home/', views.home),
  25. url(r'^app01/', include("app01.urls")),
  26. url(r'^app02/', include("app02.urls")),
  27.  
  28. ]

全局的路由系统

  1. """first_django_project URL Configuration
  2.  
  3. The `urlpatterns` list routes URLs to views. For more information please see:
  4. https://docs.djangoproject.com/en/dev/topics/http/urls/
  5. Examples:
  6. Function views
  7. 1. Add an import: from my_app import views
  8. 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
  9. Class-based views
  10. 1. Add an import: from other_app.views import Home
  11. 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
  12. Including another URLconf
  13. 1. Import the include() function: from django.conf.urls import url, include
  14. 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
  15. """
  16. from django.conf.urls import url,include
  17. from django.contrib import admin
  18. from app02 import views
  19.  
  20. urlpatterns = [
  21. url(r'^admin/', admin.site.urls),
  22. url(r'^info/', views.info),
  23. url(r'^home/(\d+)(.*)', views.handle_args),
  24. url(r'^home/', views.home),
  25. url(r'^db/add', views.db_add),
  26. url(r'^db/del', views.db_del),
  27. url(r'^db/update', views.db_update),
  28. url(r'^db/select', views.db_select),
  29. url(r'^db/login', views.db_login),
  30.  
  31. ]

/projectname/appname/usrs.py

url会把一个url的请求给到一个view的方法里面

  1. from django.shortcuts import render
  2. # Create your views here.
  3. from django.shortcuts import HttpResponse, redirect
  4. from app02 import models
  5. from first_django_project import settings
  6.  
  7. def home(request):
  8. return HttpResponse("app02.home")
  9.  
  10. def handle_args(args):
  11. pass
  12.  
  13. def info(request):
  14. pass
  15.  
  16. def db_add(request):
  17. one_user = {"name":"dujuan1", "email":"dujuan.foxmail.com", "comment":"this is comment", "age":23}
  18. models.UserInfo.objects.create(**one_user)
  19. return HttpResponse("add ok")
  20.  
  21. def db_del(request):
  22. models.UserInfo.objects.filter(name="dujuan1").delete()
  23. return HttpResponse("del ok")
  24.  
  25. def db_update(request):
  26. models.UserInfo.objects.filter(name="dujuan1").update(age=25)
  27. return HttpResponse("update ok")
  28.  
  29. def db_select(request):
  30. # ret = models.UserInfo(models.UserInfo.objects.all().first())
  31. # return HttpResponse(ret.name + "---" + ret.email + "-----" + ret.comment + "-----" + ret.age + "----" + "select ok")
  32. #add data to databas first
  33. if request.method == "POST":
  34. submit_data = request.POST
  35. print(submit_data,type(submit_data))
  36. models.UserInfo.objects.create(name = submit_data["name"],
  37. email = submit_data["email"],
  38. comment = submit_data["comment"],
  39. age = submit_data["age"]
  40. )
  41. print("insert into ok")
  42. ret_list = models.UserInfo.objects.all()
  43. # 探测是否获得了数据
  44. for line in ret_list:
  45. print(line.name)
  46. print("select ing ... ...")
  47. myrender = render(request, settings.BASE_DIR + "\\templates\\db_select.html", {"li": ret_list})
  48. return HttpResponse(myrender)
  49.  
  50. def db_login(request):
  51. # login_page_fp = open(settings.BASE_DIR + "\\templates\\app02_login.html", "r", encoding="utf-8")
  52. # login_page_str = str(login_page_fp)
  53. # login_page_fp.close()
  54. if request.method == "POST":
  55. print("-----li------request.method == post")
  56. submit_data = request.POST
  57. submit_data_name = submit_data["name"]
  58. submit_data_email = submit_data["email"]
  59. query_data = models.UserInfo.objects.filter(name=submit_data_name)
  60. # print(query_data,type(query_data))
  61. for item in query_data:
  62. print(item,type(item))
  63. print(item.name)
  64. print(item.email)
  65. cur_email = item.email
  66. if cur_email == submit_data_email:
  67. print("----li----authentication success")
  68. data_list = models.UserInfo.objects.all()
  69. ret_render = render(request, settings.BASE_DIR + "\\templates\\db_select.html", {"li": data_list})
  70. return HttpResponse(ret_render)
  71.  
  72. ret_render = render(request, settings.BASE_DIR + "\\templates\\app02_login.html", context=None)
  73. return HttpResponse(ret_render)

/projectname/appnaem/views.py

views会去models里面去取数据

  1. from django.db import models
  2.  
  3. # Create your models here.
  4.  
  5. class UserInfo(models.Model):
  6. name = models.CharField(max_length=32)
  7. email = models.CharField(max_length=32)
  8. comment = models.CharField(max_length=32)
  9. age = models.IntegerField()
  10. password = models.CharField(max_length=32,default="")
  11.  
  12. # def __str__(self):
  13. # s = {"id": self.id, "name": self.name, "email": self.email}
  14. # return s
  15. def __str__(self):
  16. return self.name
  17.  
  18. class Reporter(models.Model):
  19. name = models.CharField(max_length=32)
  20.  
  21. def __str__(self):
  22. return self.name
  23.  
  24. class Article(models.Model):
  25. pub_date = models.DateField()
  26. headline = models.CharField(max_length=32)
  27. content = models.TextField()
  28. reporter = models.ForeignKey(Reporter)
  29.  
  30. def __str__(self):
  31. return self.headline

/projectname/appname/models.py

views 还回去templates里面那html样式

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>user info</title>
  6. </head>
  7. <body>
  8. <center>
  9. <table border="">
  10. <thead>
  11. <tr>
  12. <td>name</td>
  13. <td>email</td>
  14. <td>comment</td>
  15. <td>age</td>
  16. </tr>
  17. </thead>
  18. <tbody>
  19. {% for line in li %}
  20. <tr>
  21. <td>{{ line.name }}</td>
  22. <td>{{ line.email }}</td>
  23. <td>{{ line.comment }}</td>
  24. <td>{{ line.age }}</td>
  25. </tr>
  26. {% endfor %}
  27. </tbody>
  28. </table>
  29. <br>
  30. <hr style="height:3px;border:none;border-top:3px double red;" />
  31. <form action="/app02/db/select" method="post">
  32. <table>
  33. <thead>
  34. <tr>
  35. <td>name</td>
  36. <td>value</td>
  37. </tr>
  38. </thead>
  39. <tbody>
  40. <tr>
  41. <td>name</td>
  42. <td><input type="text" name="name" value=""></td>
  43. </tr>
  44. <tr>
  45. <td>email</td>
  46. <td><input type="text" name="email" value=""></td>
  47. </tr>
  48. <tr>
  49. <td>comment</td>
  50. <td><input type="text" name="comment" value=""></td>
  51. </tr>
  52. <tr>
  53. <td>age</td>
  54. <td><input type="text" name="age" value=""></td>
  55. </tr>
  56. <tr>
  57. <td><input type="submit" name="add" value="add"></td>
  58. </tr>
  59. </tbody>
  60. </table>
  61. </form>
  62. </center>
  63. </body>
  64. </html>

/templates/db_select.html

好了,现在运行吧

在浏览器里面输入

http://127.0.0.1:8000/app02/db/select

后台查出来的数据也是这个

特别感谢

  http://www.maiziedu.com/article/8579/   -----  让我知道了PyMySQL

  http://python.usyiyi.cn/django/intro/overview.html     ---- dango1.8的中文文档,作者英语不是很好,中英文结合看吧

如果有疑问,可以联系作者

yangliw3@foxmail.com

windows10 -- mysql5.5 + python3.4 + django1.11 +pycharm2016.2 + PyMySQL(DB DRIVER) 环境搭建的更多相关文章

  1. Python3.7&Django1.11.15 兼容性问题

    环境: 1. Windows10 2. python3.7 3. Django1.11.15 启动Django时抛出以下异常: Unhandled exception in thread starte ...

  2. win10 64位 python3.6 django1.11 MysqlDB No module named 'MySQLdb' 安装MysqlDB报错 Microsoft Visual C++ 14.0 is required

    在python3.6中操作数据库,再按python2.7安装MySQLdb进行数据库连接已经不可用了,我使用的是另外一个方法:PyMySQL,安装好之后还是不能直接连接MySQL的,启动项目后报No ...

  3. vs2017 + Python3.6 +Django1.11 连接mysql数据库

    不废话直接来. vs2017创建一个新的python web项目之后默认链接数据库是sqlite.但是我就想连接到Mysql 上面玩,于是开始倒腾了.下面是步骤 1.修改settings.py 文件需 ...

  4. Python3的桌面程序开发利器:Eric6的环境搭建、使用

    本文旨在通过一个简单的demo,介绍基于Python3.PyQT5的环境下开发桌面应用程序的一种方案,当然开发Python的桌面应用程序不止是PyQT 这一种方案,还可以使用Python自带的Tkin ...

  5. 环境搭建文档——Windows下的Python3环境搭建

    前言 背景介绍: 自己用Python开发了一些安卓性能自动化测试的脚本, 但是想要运行这些脚本的话, 本地需要Python的环境. 测试组的同事基本都没有安装Python环境, 于是乎, 我就想直接在 ...

  6. 深度学习环境搭建:Tensorflow1.4.0+Ubuntu16.04+Python3.5+Cuda8.0+Cudnn6.0

    目录 深度学习环境搭建:Tensorflow1.4.0+Ubuntu16.04+Python3.5+Cuda8.0+Cudnn6.0 Reference 硬件说明: 软件准备: 1. 安装Ubuntu ...

  7. python3.7环境下创建app、运行Django1.11版本项目报错Generator expression must be parenthesized

    有些同学喜欢追求新鲜感~但追求新鲜感终归是要付出一点点代价的 在编程领域有一句至理名言:用东西不要用最新的! 就像每次苹果系统的升级都会有相当一部分用户的手机成砖一样 下面我们就介绍一个因版本升级带来 ...

  8. python3.7环境下创建app,运行Django1.11版本项目报错SyntaxError: Generator expression must be parenthesized

    咳咳!!! 今天用命令行创建django项目中的app应用,出现了这样一个错误 这个错误在python3.6版本下安装运行django 1.11版本正常运行,但python3.7版本下运行django ...

  9. django1.11版本在python3.7中运行还有点兼容性问题.

    django1.11版本在python3.7中运行还有点兼容性问题. 出现SyntaxError: Generator expression must be parenthesized这个报错 找到这 ...

随机推荐

  1. javascript闭包的理解和实例

    所谓闭包,值得是词法表示包括不必要计算的变量的函数,也就是说,该函数可以使用函数外定义的变量. 顺便提示一下: 词法作用域:变量的作用域是在定义时决定而不是执行时决定,也就是说词法作用域取决于源码,通 ...

  2. Java TreeSet集合 比较器排序Comparator的使用

    比较器排序Comparator的使用 存储学生对象,并遍历,创建TreeSet集合使用带参构造方法 要求,按照学生年龄从小到大排序,如果年龄相同,则按照姓名的字母循序排序 结论 用TreeSet集合存 ...

  3. Spectral clustering谱聚类

    Basic knowledge: degree matrix; similarity matrix, and Adjacency matrix; 无向带权图模型 G=<V,E>G=< ...

  4. 基于Linq表达式做的一个简单的表达式生成器

    using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; ...

  5. Jarvis OJ - class10 -Writeup

    Jarvis OJ - class10 -Writeup 转载请注明出处:http://www.cnblogs.com/WangAoBo/p/7552266.html 题目: Jarivs OJ的一道 ...

  6. CentOS 7 yum配置阿里云镜像(转)

    1.下载源配置 凡是下载国外的软件,比如用npm,pip,yum有时下载速度感人,最好配置国内镜像地址 yum配置阿里云镜像参考:https://blog.csdn.net/hnmpf/article ...

  7. Intellij IDEA 控制台中文乱码问题

    如果Intellij IDEA 控制台出现中文乱码: 1.修改Intellij IDEA 配置文件: 在安装目录的bin文件夹里找到 idea.exe.vmoptions 和 idea64.exe.v ...

  8. 使用LxRunOffline工具备份/还原Linux子系统(WSL)

    安装WSL 开启WSL组件 首先需要打开WSL组件,可以使用以下命令: Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Win ...

  9. jdk之java.lang.Integer源码理解

    基本数据类型的包装类java.lang.Integer是我们频繁使用的一个系统类,那么通过一个示例反应出的几个问题来深入理解一下此类的源码. 需求:实现Integer类型的两个数值交换. packag ...

  10. wamp修改MySQL密码

    wamp默认密码为空 用户名为root: 左击wamp绿色小图标,打开phpMyAdmin ->执行 ->账号 ->找到用户名为root的修改权限&&点击修改权限 - ...