本文将告诉您Django如何调试以及Django如何运行相应的知识点。我希望这对您有帮助。不要忘记收集此网站。
本文目录清单:
1.如何直接在浏览器中查看和调试Django 2.如何使用Pycharm进行调试Django 3.调试用Java编写的后端,如何调试Django的前端,如何调试Debug5。如何使用Pydev进行调试Django 6.找到Django God来提供帮助,您如何调试。
开始本地服务
您可以访问浏览器输入链接
更改代码时,相应的页面将更改。您可以谈论代码调试部分作为页面输出,以便您可以看到执行结果的执行结果
主要参考官方网站指南部分1
在脚本参数中写入运行服务器,您可以运行调试模式。
过去,您选择了PythonWeb体系结构受到可用的Web服务器的约束,反之亦然。如果体系结构和服务器可以一起工作,那么您很幸运:
但是您可能会面临以下问题(或曾经)。当您将服务器与体系结构相结合时,您会发现它们不是作为协调工作设计的:
基本上,您只能使用可以一起运行的东西而不是要使用的东西。
那么,如何不修改服务器和体系结构代码以确保可以在多个体系结构下运行Web服务器?答案是pythonwebservergatewaywaywayinterface(或wsgi,称为“ wizgy”)。
WSGI允许开发人员将Web框架与Web服务器分开。现在您可以混合和匹配Web服务器和Web框架以选择适合您的配对。nginx/uwsgi或女服务员。真正的混合匹配是由于WSGI同时支持服务器和体系结构:
WSGI是开始问题的第一个和答案。您的Web服务器必须具有WSGI接口。所有现代的PythonWeb框架都已经具有WSGI接口。它使您可以一起工作以使服务器和特征网络框架共同起作用。
现在,您知道WSGI得到了Web服务器的支持,Web框架使您可以选择自己的匹配,但是它还为服务器和框架开发人员提供了便利性,因此他们可以专注于自己的首选字段和专业知识,而无需限制。其他语言中也有类似的界面:Java具有Servicetapi,Ruby具有机架。
说了很多话,你一定要大喊大叫,告诉我代码!好吧,看看这个极简主义的WSGI服务器实现:
#Teestwithpython2.7.9,Linuxmacosx
ImportSocket
ImportStringio
进口
classwsgiserver(对象):
adversion_family = socket.af_inet
socket_type = socket.sock_stream
request_queue_size = 1
def__init __(self,server_address):
#createalisteeneingsocket
self.listen_socket = listy_socket = socket.socket(
self.address_family,
self.socket_type
治愈
#AllowToreUseThesameDdress
#bind
listn_socket.bind(server_address)
#启用
listn_socket.lisen(self.request_queue_size)
#getServerHostNameanDport
主机,port = self.listen_socket.getSockName()[:2]
self.server_name = socket.getFQDN(主机)
self.server_port =端口
#returnheaderssetbywebframework/webapplication
self.headers_set = []
defset_app(self,application):
self.Application =应用程序
defserve_forever(self):
listn_socket = seld.listen_socket
何时:
#NewClientConnection
self.client_connection,client_address = listy_socket.accept()
#anderonRequestandCloseTheclientConnection.then
#loopovertoranotherclientconnect
self.handle_one_request()
defhandle_one_request(self):
self.request_data = request_data = self.client_connection.recv(1024)
#printformattedrequestdatala'curl-v'
打印(''。加入
'{线}
'.format(line = line)
forlineinrequest_data.splitlines()
))
self.parse_request(request_data)
#ConstructonvironmentIctIctIctInangrequequestdata
env = self.get_et_environ()
#它是静止的
#backaresultthatwillbecomehtpresponsebody
结果= self.application(env,self.start_response)
#constructareseanseandesenditbacktotheclient
self.finish_response(结果)
defparse_request(self,text):
request_line = text.splitlines()[0]
request_line = request_line.rstrip('
')
#BreakDownThereQuestLineIntocomponents
(self.request_method,#获取
self.path,#/你好
self.request_version#http/1.1
)= request_line.split()
defget_environ(self):
env = {}
#TheFollowIncodesnippetDoesnotFollowPep8conconconventions
#buuttt isformatedThewayItisfordEmstRpuss
#ToPlasezetherequiredVariables和Theirvalues
#
#requiredwsgivariables
env ['wsgi.version'] =(1,0)
env ['wsgi.url_scheme'] ='http'
env ['wsgi.input'] = stringio.stringio(self.request_data)
env ['wsgi.errrs'] = sys.stderr
env ['wsgi.multithread'] = false
env ['wsgi.multiprocess'] = false
env ['wsgi.run_once'] = false
#RequiredCgivariables
env ['request_method'] = self.request_method#get
env ['path_info'] = self.Path#/Hello
env ['server_name'] = self.server_name#localhost
env ['server_port'] = str(seld.server_port)#8888
返回
defstart_response(self,status,wendy_headers,exc_info = none):
#addn ResucessareServerHeaders
server_headers = [
('date','星期二,31mar201512:54:48gmt'),
('服务器','wsgiserver0.2'),
这是给予的
self.headers_set = [状态,响应_headers+server_headers]
#toadheretowsgispecificationtate_responsemustreturn
#a'write'callile.wesimplicity'ssake'llignorethatdetail
#目前。
#returnself.finish_response
Definish_Response(SELD,结果):
尝试:
状态,响应_headers = self.headers_set
响应='http/1.1 {状态}
'.format(状态=状态)
forheaderinresponse_headers:
响应+='{0}:{1}
'。格式(*标题)
响应+='
'
Fordatainrsult:
响应+=数据
#printformattedResponsetatala'curl-v'
打印(''。加入
'{线}
'.format(line = line)
forlineinresponse.splitlines()
))
self.client_connection.sendall(响应)
最后:
self.client_connection.close()
server_address =(主机,端口)='',8888
defmake_server(server_address,应用程序):
server = wsgiserver(server_address)
server.set_app(应用程序)
返回服务器
if__名称__ =='__ main__':
iflen(sys.argv)2:
sys.exit('provideawsgiapplicationObjectassmodule:callable')
app_path = sys.argv [1]
模块,应用程序= app_path.split(':')
模块= __导入__(模块)
应用程序= getttr(模块,应用程序)
httpd = make_server(server_address,application)
print('wsgiserver:servinghttponport {port} ...
'.format(port = port))
httpd.serve_forever()
这比第一个代码长得多,但是它足够短(只有150行),可以让您理解并避免详细信息。框架,金字塔,烧瓶,Django或其他Pythonwsgi框架。
不相信我吗?自己尝试一下。请访问上述weberver2.py的代码,或直接在github上下载。如果您不通过任何参数传递,它将提醒然后启动。
$ pythonwebserver2.py
supportgiapplicationObjectsmodule:callial
1. Python和Django环境建设
(1)下载anaconda3并安装
韦特
SH Anaconda3-2.3.0-Linux-X86_64.SH
输入密钥后,然后提示是否添加环境变量,请输入是。
(2)安装Django
直接pip安装django
安装成功后,您可以创建一个新项目
django-admin startproject demosite
CD Demosite
python manage.py startapp博客
python manage.py迁移
(3)运行django
python manage.py runserver
curl 127.0.0.1:8000如果可以正常访问,则成功安装了Django。
2.安装UWSGI
(1)Centos
YUM安装Zlib-Devel bzip2-devel pcre-deveel openssl-devel ncurses-devel-devel sqlite-devel-devel readline-devel-devel-devel tk-devel
PIP安装UWSGI
UWSGI - Version #View UWSGI版本
(2)test.py
然后,运行UWSGI:
uwsgi-http:8000-wsgi-file test.py
def应用程序(env,start_response):
start_response('200 ok',[('content-type','text/html')]))))))
返回[“ Hello World”]#Python2
#Return [B“ Hello World”]#Python3
(3)Ubuntu可能会犯错:
如果有错误,!没有内部路由支持,可以通过PCRE支持重建!!!
sudo apt-get安装libpcre3 libpcre3-dev
sudo pip卸载uwsgi
sudo apt-fin删除uwsgi
sudo pip安装uwsgi
(4)测试
1)打开下面的URL,Hello World应该显示在浏览器上
如果在HTTPIE模块中安装了卷曲,请使用http
如果显示正确是Hello World,则意味着上述链接未屏蔽
2)测试django
默认情况下,Django新项目的使用将在应用程序应用下生成wsgi.py文件
uwsgi-http:8000-wsgi-file wsgi.py也将直接报告错误
uwsgi-http:8000-wsgi-file appname/wsgi.py.py
打开浏览器输入。如果正确解释了现实,则web client-uwsgi --- django却没有阻碍
3.安装和配置nginx
(1)安装
韦特
TAR XF NGINX-1.9.5.TAR.GZ
CD NGINX-1.9.5
https://www.shouxicto.com/article/configure-prefix =/usr/locar/local/nginx -with-http_status_module -with-with-gzip_module
进行安装
或参考
(2)配置文件
vi/usr/local/nginx/conf/nginx.conf
一般来说,添加服务器是可以的
参考配置如下
用户根;
Worker_Processes 1;
#Error_log logs/error.log;
#Error_log日志/错误。日志通知;
#Error_log logs/error.log信息;
pid logs/nginx.pid;
事件{
使用epoll;
Worker_connections 65535;
}
http {
包括mime.types;
default_type应用程序/八位字 - stream;
#log_format main'$ remote_addr -$ remote_user [$ time_local]“ $请求”'
#'$ status $ body_bytes_sent“ $ http_referr”''
#'“ $ http_user_agent”“ $ http_x_forwardded_for”';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
服务器 {
听8099;
server_name 10.117.52.157;## IP和端口访问室外
access_log/tmp/cms/access.log;
error_log/tmp/cms/error.log;
#Charset KOI8-R;
#access_log logs/host.access.log main;
地点 / {
包括uwsgi_params;
UWSGI_PASS 127.0.0.1:8088;
uwsgi_read_timeout 300;
}
#Error_page 404 /404.html;
#重定向服务器页面到静态页面/50x.html
#
#ERROR_PAGE 500 502 503 504 /regization/500.html;
#location = /registration/500.html {
#根HTML;
#}
位置 /静态 / {
别名/root/cms/cms/static/;
索引index.html index.htm;
}
位置 /媒体 / {
别名/root/cms/cms/media/;
}
}
}
(3)运行并重新启动
/usr/local/nginx/sbin/nginx
开始:nginx开始
重新启动:nginx -s重新加载
4.使用UWSGI的配置文件运行Django
确保NGINX运行后,您可以通过UWSGI.NGINX在最外层接收请求,然后将其自身处理,然后通过套接字端口将其动态交给UWSGI。
配置文件内容如下
[UWSGI]
套接字=:8088#与对应于Nginx相对应的IP一致
chdir的目录=/root/cms/cms #app
模块= cms.wsgi#wsgi.py文件位置
touch-regoad =/root/cms/cms/recoad #restart只需输入命令触摸重新加载文件
过程= 4
线程= 2
daemonize =/tmp/cms/wsgi.log #log文件位置
放入应用程序的第一级
直接运行uwsgi - ini uwsgi.ini
1.调试环境安装
件pydev插头 - 安装
添加HTTP // PYDEV SF NET/更新自动下载并在主菜单“ Help” - “软件更新...”中安装。
?安装安装后,配置
在主菜单中,“窗口” - “偏好”
2.创建Pydev Django项目
?创建一个新的
如果您已经有Django目录结构,则可以生成Eclipse项目。你可以通过
或者
新建筑。
只需创建一个即可。
?创建的简介
如果已经有一个指向目录的Eclipse Django项目,则可以通过导入方法引用该项目。
?项目设置
在项目新建或介绍项目后,在项目的右边,选择“属性”并继续配置项目:
顺便说一句,配置项目类型:
3.调试设置
您可以使用以下配置来实现Web调试,也可以单独调试函数:
配网络调试方法配置
Web调试实际上是用于调试的内部“ Manage.py Runserver -noreload”功能。
设置后,每次运行调试选项。以下说明在运行时出现在控制中心中:
然后选择浏览器中的相关URL,只需中断您需要调试的位置的点即可。
在PYDEV中,您无法在修改代码后立即工作。您必须重新审理。这也是Noreload的角色。
?单功能验证
有时,您只想单独运行一个函数,您可以单独运行Python函数以进行运行。Python的功能调试非常简单;但是对于Django来说,因为它不在Web配置中,因此在调试Django函数时,您总是会失败,因为找不到相关设置。您可以在代码中指定设置。
测试功能:
#Import Django项目设置
#django.bin.mypython是Django项目所在的目录
导入操作系统
OS.Environ
#解释说,如果使用了序列化方法,则以上方法将表明找不到许多应用模块;
#建议使用以下方法是最好的
来自django.core.Management Import Setup_environ
导入django.bin.mypython.settings
setup_environ(django.bin.mypython.settings)
#没有解决方案。
#测试功能,请注意,网络没有调用请求。
来自django.core导入服务器
来自mypython.addressbook.models导入地址
def test():
objs = address.objects.all()
str = serializers.serialize(“ json”,objs)#serialization to json对象
打印str
#运运
测试 ()
设置调试项目
然后运行。
可以先测试单位测试。
提示很清楚。没有设置模块(设置可能位于django.conf文件夹中,也可以是要找到错误的文件。您能找到一个错误图吗?
Django如何调试以及如何运行Django的介绍。我想知道您是否从中找到了所需的信息?如果您想进一步了解此信息,请记住要收集对该网站的关注。