• 0
  • 1
分享
  • Python Django带你构建Web应用!
  • 恬恬圈 2019-09-10 13:38:01 字数 4905 阅读 1705 收藏 1

1、django+python27+mysql的生产环境,想换成python3,请问需要哪些注意事项?生产环境数据不想被破坏,所以不敢轻易下手,希望大神指点一下。

关于python升级:

可以使用Python3自带工具2to3,将python2的代码转换为python3。少部分代码仍需手工转换。

升级python版本后,第三方包的版本需要升级。有的第三方包不支持python3。这个时候可以尝试使用2to3工具对第三包的python源代码进行转换,然后使用。这样存在一定风险。无法转换的,需要寻找替代包,应用服务器上对应的代码需要修改。

关于django升级:

django1.5开始支持python3。同时django1.11是支持python2的最后的版本。如果使用的django版本大于等于1.5,则django版本可以不升级。如果django版本低于1.5,则需要升级django版本。升级django版本后,新版本不兼容的老的API都需要修改。这个工作量比较大。

升级django版本后,为django服务的第三方包需要对应升级。建议django不要立即使用最新版本,以免第三方包还不支持最新的django版本。

关于mysql:

mysqldb不支持python3,需要使用mysqlclient做数据库API驱动。

django2.0只支持myslq5.5或者更高版本

一般性的版本升级注意事项。

代码和数据做好备份

python和django升级后,上线前需要充分测试。


2、刚学习django的nginx部署,一直不清楚处理高并发的原理,大神可以解释下么?

我简单说一下我的理解。

django WSGI是单线程的,就是说一个请求处理完了才能响应另一个请求。

uWSGI(C语言书写)+Django相比与单独使用Django,通过多进程,发挥多核的优势,支持的并发量更高。

the web client <-> the web server <-> the socket <-> uwsgi <-> Django

uwsgi服务器运行在django一侧。

uWSGI(C语言书写)+Django相比与单独使用Django,使用多进程,发挥多核的优势,支持的并发量更高。uWSGI中有master和worker进程。master进程根据配置创建相应数目的worker进程。一个worker进程被创建后,它会运行一个python解释器实例,然后在worker进程被销毁前一直使用。master将收到的http请求分配给worker处理。worker进程调用python脚本处理http请求。一个worker进程反复用于处理很多个HTTP请求。woker进程数应该大于CPU内核数。然后根据CPU利用率增加进程数目。


3、我现在系统需要一个功能,当一个任务到达某个状态时,如果24小时没有任何人操作,则自动切换到另一个状态,对每个用户是有不同的任务的,有点想百度外卖下单等待商家接单的那种,有什么可以方便django整合一起的框架吗?django-celery如何?

简单说一下我的考虑,供你参考。

用户下单后,用户订单信息写入数据库。商家接单后,修改数据库中用户订单状态。

关于定时器:考虑使用django-celery创建一个线程做异步处理,24小时后检查数据库中用户订单状态。如果仍然没有商家接单,则修改订单状态。但是这样可能线程太多,资源消耗太大。可以使用django-celery设置循环任务,比如每隔5分钟查询出数据库中已经超过24小时、但是仍然没有商家接单的订单,修改这些订单的状态。


4、要怎么样运行Django里的程序啊?出于比赛需要,要解释一个 Django框架里的软件,本人学java,没接触过 Python的框架?求入口在哪儿?怎么运行啊?

这个操作我的教程“Python Django带你构建Web应用”里有。

进入django项目根目录。python manage.py runserver运行内置的Web服务器。缺省提供服务的IP地址是127.0.0.1,端口是8000。

如果希望对外提供服务,可以修改为真实的IP地址,例如想要使用1.1.1.1:8080对外提供服务。则在settings.py修改ALLOWED_HOSTS的内容为ALLOWED_HOSTS = [‘1.1.1.1’,]。 d:\django\web> python manage.py runserver 1.1.1.1:8000运行内置的Web服务器。


5、想跟你请教个问题:能用django做旅游调查网站吗,通过调查班级同学的旅游意向,将信息存入数据库,然后进行简单的分析,得出最佳旅游地点,这种想法可行吗?

第一部分收集和存储信息的需求和django相关。这是一个简单的Web应用。使用表单获取同学们的旅游意向。因为数据量小,所以可以直接将数据存入SQLite数据库中。这在“Python Django带你构建Web应用”课程中有讲解。

第二部分数据分析和结果展示,不一定需要依赖于django。根据需要从数据库中提取信息进行分析。如果分析复杂,可以使用numpy、pandas进行分析,使用matploitlib展示分析结果。


6、本来是准备开发一个web应用,主要是网站和客户端(pda)访问,现在网站使用django很方便就完成了,那在客户端(pda)上面的想法是用webservice,也不知道可以直接使用django实现。能不能不用webservice,直接django搞定,希望能得到解决方案并普及一下知识

可以使用Django REST framework来实现RESTful web service。


7、如何最高效的利用django进行快速开发?或者可以说django那些部分,可以帮助实现快速开发?

我觉得django开发快的原因在于:

首先是python,作为动态类型语言,使用灵活,开发速度快。

其次,和另外一个常用的python web框架flask对比。django提供的功能更全面。django是重量级框架。flask是轻量级框架,很多基本的功能都需要自己实现或者使用第三方组件,但是使用灵活。

django优点:内置功能完善、强大(比如表单、认证、权限控制、文件上传、测试、国际化、分页、序列化、会话、数据验证、异常处理)使用方便,很多功能都不需要程序员自己实现了,强大的ORM机制,强大的admin站点,url pattern灵活易用,APP可插拔,错误提示信息非常详细,官方文档完善。

django缺点:封装层次多,修改困难。想用喜欢的第三方组件来代替内置组件比较困难。django为了将表现和逻辑分离,所以DTL功能比较弱。

根据需求选择框架,快速开发选择django,深层次定制,选择flask。


8、我用终端创建django项目时 提示 django-admin: command not found ,但是运行Python 导入django又可以,这是哪里出错了 而且之前有创建成功过,能帮忙解答一下吗?

比如python安装目录是D:\Python36\,则安装django后,django-admin.exe在D:\Python36\Scripts\中。需要将D:\Python36\Scripts\;添加到系统变量Path中。


9、想问一下,一个分组查询,现在有一个"性别"字段,我想统计其中男女生各有多少人,想用分组查询的办法。但是找不到示例代码,求老师赐教

类似查询每个用户写了多少篇blog

from django.db.models import Count
numbers = Blog.objects.values('username').annotate(blog_count=Count('username')).order_by()

等效于SQL语句:

select username, count(*) from Blog group by username

得到的QuerySets numbers的值是:

<QuerySet [{'username': 'admin', 'blog_count': 2}, 
{'username': 'Tom', 'blog_count': 4}, 
{'username': 'Jack', 'blog_count': 2}]>

最后添加order_by()是因为model里面定义了class meta: ordering。

  

10、Django中的通用视图是个难点吗?今天搞了一天这个通用视图,我是一点没懂。网上也查不到详细的资料,求老师简单介绍一下~

django视图最常做的事情是根据url中传入的参数,从数据中获取数据。加载模板,然后返回渲染后的模板。django提供通用视图来实现这一常见流程。从而减少视图的代码量。

URLconf中参数的名字可能需要修改,比如DetailView通用视图要求使用参数"pk"来表示主键。

在继承了通用视图类的视图类中,只需要指定model和template_name,就可以完成基本的流程。

另外还要注意context变量要和template中对应。

django2.0的手册 2.6.2 Use generic views: Less code is better给出了一个基本的例子。你可以试一下这个例子。


11、我原来做一个项目:因为表没有关联,所以用的是非关系型数据库mongodb,项目开发环境用的是python+django,部署在ubuntu上。当时用了pymongo做python和mongodb的连接,用mongoengine做了django与mongodb的连接。

现在来了新的需求,表之间有关联,因此我准备添加一个mysql数据库。

请问老师,django展示网页的时候,能够同时展示mongodb中表的内容和mysql中表的内容吗?settings.py中应该如何配置数据库呢?

可以在同一个网页中同时显示Mongodb和mysql中的数据。Django中只需要把需要显示的内容通过context传递给template即可。不管context的内容来自哪种数据库。

在setting.py DATABASES中添加连接mysql所需的参数,例如:

 'db2': {
  'ENGINE': 'django.db.backends.mysql',
  'NAME': 'blog',
  'USER': 'root',
  'PASSWORD': '123456',
  'HOST': '10.0.0.1',
  'PORT': '3306',
  }

可以设置数据库和app的映射关系

 DATABASE_APPS_MAPPING = {
  'app1': 'db1',
  'app2': 'db2',
  }

也可以在查询或者修改数据库内容时,使用函数using()或者参数using来指定需要使用哪个数据库。


12、作为一名小白,我想问大神:都说python django学起来相对来说比较简单,从入门到学会大致需要多久的时间啊?也就是学习周期大概有多长?需要哪些基础呢?

如果了解MVC框架和http协议,又懂python,那学django比较快。否则的话时间就久一些。

  

13、我用django自动创建了后台需要的表,其中一张表A用来存需要展示的新闻内容,之前新闻内容是存在另外一张表B中(mysql的数据库编码之前是latin,后来改成utf8,A表B表全部都是utf8编码),我把B表内容导入A表,英文部分是正常,但是中文部分全部变成了问号,求解

可能问题出在connection连接层上。需要将连接层的编码方式也修改为UTF-8

     

版权声明:本文出自51Testing会员投稿,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   小编看到过这样的一个帖子,根据题主的描述可以看出来他是一名拥有十年工作经验的功能测试人员,目前掌握的技能还只是简单的功能测试,没有什么代码能力,面对功能测试的职场窘境,正在选择下一步该转测试开发还是软件开发?其实现在像题主一样处境的人不在少数,这就是行业技术发展的趋势导致。开篇之前,小编直接亮明观点,在测试开发和软件开发之间,选择前者的发展会永远比后者好。  这篇文章将从以下三个方面阐述我的观点:  ·功能测试为什么不建议选择软件开发?  · 为什么功能测试会产生转行软件开发的想法?  · 功能测试如何晋升测试开发?  一、功能测试为什么不建议选择软件开发?  表面看,...
            0 0 1608
            分享
          • 小程序测试过程中,不知道大家有没有碰到一个问题,打开了很多页面之后,小程序操作突然卡卡住,就没有任何反应了。在之前项目的小程序测试过程中很多次都碰到了这种情况,开发的解释从来都是说,被微信限制了。但是自己总觉得需要想办法去解决,所以还是决定自行去学习分析下这种情况。在小程序中,打开一个新的页面其实就是创建了一个新的View对象,一层层叠加的。当点击页面的回退按钮就是把当前页面关闭。小程序页面栈的上限是10个,这个过程中就很有可能会碰到这样一个问题,就是我最一开始说的打开页面的数量过多,达到10个页面后,就不能再打开新的页面。在某些产品功能要求下,比如一个学员正在学习一个课程,在课程详情页底部一...
            1 0 8122
            分享
          • 【全国】博为峰51Testing企业培训,打造精品内训课程!51企业内训服务   迅速提升企业测试团队综合能力51Testing资深讲师团队走进企业,根据业务及团队实际需求,量身打造专属个性化培训课程,“专药专治”有效提升测试团队战斗力。提升测试团队能力,为软件质量保驾护航。课程体系量身定制,内容多样化,补缺团队技术短板!测试基础类:软件工程、质量和测试基础;需求开发、管理和工程;ISTQB初级(测试工程师)& 高级(测试经理);测试技术(通用课程)测试设计类:软件测试需求分析与系统测试用例设计、ISTQB高级(测试分析师)、ISTQB高级(测试技术分析师)、单元、...
            0 0 1626
            分享
          • 在面试的时候,如果你透漏出你会接口测试,面试官往往会针对你会的接口测试问很多专业性的问题:所以在面试之前,还是要多多了解接口测试的相关知识到底什么是接口?一般来说接口有两种,一种是程序内部的接口,一种是系统对外的接口。广义来说,客户端与后台服务间的协议;插件间通信的接口;模块间的接口;再小到一个类提供的方法;都可以理解为接口系统对外的接口如果我们要从网站或服务器上获取资源或信息,网站肯定不会把数据库共享给你,它只会给你提供一个写好的方法来获取数据,我们通过引用它提供的接口就能获取数据程序内部的接口它是方法与方法之间,模块与模块之间的交互,也是程序内部抛出的接口。比如一个web项目,有登录、新增...
            0 0 1162
            分享
          • 1、引言因为小鱼在上一章节写了 多台appium的启动,然后就联想到 能不能搞一个多进程启动appium服务。于是乎~~那就搞起来~ ~关于并发的问题,小鱼写过专题文章《常见并发问题》《多线程并发》《多线程并发框架》但是呢,今天小鱼不写多线程并发,写个多进程并发在上代码之前,咱先弄清楚,多进程与多线程,到底有何区别:2、代码示例知道了多进程与多线程的区别, 我们就来写代码代码示例:# -*- coding: utf-8 -*- #@ auth : Carl_DJ #@ time : 2022-6...
            0 0 1712
            分享
      • 51testing软件测试圈微信