问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

django项目如何调试(2023年最新整理)

发布网友 发布时间:2024-09-30 02:09

我来回答

1个回答

热心网友 时间:2024-09-30 23:03

导读:很多朋友问到关于django项目如何调试的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!

如何利用pycharm调试Django

在scriptparameters里写上runserver,就可以运行debug模式了,纯手打,有问题可以问我,远程操作

求Django大神帮忙,如何才能调试出。

提示很清楚了,没有settings模块(settings可能是django.conf文件夹中的,也能是你项目的settings.py文件)首先要找到出错的文件,可以截个错误图?

Django部署在linux下,如何调试?

就正常的print,就可以在日志里面找到部署容器log里面找到输出。

要调试一个用java写的后端,django写的前端的web应用应该怎么调试

在以前,你选择Pythonweb架构会受制于可用的web服务器,反之亦然。如果架构和服务器可以协同工作,那你就走运了:

但你有可能面对(或者曾有过)下面的问题,当要把一个服务器和一个架构结合起来是发现他们不是被设计成协同工作的:

基本上你只能用可以一起运行的而非你想要使用的。

那么,你怎么可以不修改服务器和架构代码而确保可以在多个架构下运行web服务器呢?答案就是PythonWebServerGatewayInterface(或简称WSGI,读作“wizgy”)。

WSGI允许开发者将选择web框架和web服务器分开。现在你可以混合匹配web服务器和web框架,选择一个适合你需要的配对。比如,你可以在Gunicorn或者Nginx/uWSGI或者Waitress上运行Django,Flask,或Pyramid。真正的混合匹配,得益于WSGI同时支持服务器和架构:

WSGI是第一篇和这篇开头又重复问道问题的答案。你的web服务器必须具备WSGI接口,所有的现代PythonWeb框架都已具备WSGI接口,它让你不对代码作修改就能使服务器和特点的web框架协同工作。

现在你知道WSGI由web服务器支持,而web框架允许你选择适合自己的配对,但它同样对于服务器和框架开发者提供便利使他们可以专注于自己偏爱的领域和专长而不至于相互牵制。其他语言也有类似接口:java有ServletAPI,Ruby有Rack。

说这么多了,你肯定在喊,给我看代码!好吧,看看这个极简的WSGI服务器实现:

#TestedwithPython2.7.9,LinuxMacOSX

importsocket

importStringIO

importsys

classWSGIServer(object):

address_family=socket.AF_INET

socket_type=socket.SOCK_STREAM

request_queue_size=1

def__init__(self,server_address):

#Createalisteningsocket

self.listen_socket=listen_socket=socket.socket(

self.address_family,

self.socket_type

)

#Allowtoreusethesameaddress

listen_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)

#Bind

listen_socket.bind(server_address)

#Activate

listen_socket.listen(self.request_queue_size)

#Getserverhostnameandport

host,port=self.listen_socket.getsockname()[:2]

self.server_name=socket.getfqdn(host)

self.server_port=port

#ReturnheaderssetbyWebframework/Webapplication

self.headers_set=[]

defset_app(self,application):

self.application=application

defserve_forever(self):

listen_socket=self.listen_socket

whileTrue:

#Newclientconnection

self.client_connection,client_address=listen_socket.accept()

#Handleonerequestandclosetheclientconnection.Then

#loopovertowaitforanotherclientconnection

self.handle_one_request()

defhandle_one_request(self):

self.request_data=request_data=self.client_connection.recv(1024)

#Printformattedrequestdataala'curl-v'

print(''.join(

'{line}\n'.format(line=line)

forlineinrequest_data.splitlines()

))

self.parse_request(request_data)

#Constructenvironmentdictionaryusingrequestdata

env=self.get_environ()

#It'stimetocallourapplicationcallableandget

#backaresultthatwillbecomeHTTPresponsebody

result=self.application(env,self.start_response)

#Constructaresponseandsenditbacktotheclient

self.finish_response(result)

defparse_request(self,text):

request_line=text.splitlines()[0]

request_line=request_line.rstrip('\r\n')

#Breakdowntherequestlineintocomponents

(self.request_method,#GET

self.path,#/hello

self.request_version#HTTP/1.1

)=request_line.split()

defget_environ(self):

env={}

#ThefollowingcodesnippetdoesnotfollowPEP8conventions

#butit'sformattedthewayitisfordemonstrationpurposes

#toemphasizetherequiredvariablesandtheirvalues

#

#RequiredWSGIvariables

env['wsgi.version']=(1,0)

env['wsgi.url_scheme']='http'

env['wsgi.input']=StringIO.StringIO(self.request_data)

env['wsgi.errors']=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(self.server_port)#8888

returnenv

defstart_response(self,status,response_headers,exc_info=None):

#Addnecessaryserverheaders

server_headers=[

('Date','Tue,31Mar201512:54:48GMT'),

('Server','WSGIServer0.2'),

]

self.headers_set=[status,response_headers+server_headers]

#ToadheretoWSGIspecificationthestart_responsemustreturn

#a'write'callable.Wesimplicity'ssakewe'llignorethatdetail

#fornow.

#returnself.finish_response

deffinish_response(self,result):

try:

status,response_headers=self.headers_set

response='HTTP/1.1{status}\r\n'.format(status=status)

forheaderinresponse_headers:

response+='{0}:{1}\r\n'.format(*header)

response+='\r\n'

fordatainresult:

response+=data

#Printformattedresponsedataala'curl-v'

print(''.join(

'{line}\n'.format(line=line)

forlineinresponse.splitlines()

))

self.client_connection.sendall(response)

finally:

self.client_connection.close()

SERVER_ADDRESS=(HOST,PORT)='',8888

defmake_server(server_address,application):

server=WSGIServer(server_address)

server.set_app(application)

returnserver

if__name__=='__main__':

iflen(sys.argv)2:

sys.exit('ProvideaWSGIapplicationobjectasmodule:callable')

app_path=sys.argv[1]

module,application=app_path.split(':')

module=__import__(module)

application=getattr(module,application)

httpd=make_server(SERVER_ADDRESS,application)

print('WSGIServer:ServingHTTPonport{port}...\n'.format(port=PORT))

httpd.serve_forever()

这比第一篇的代码长的多,但也足够短(只有150行)来让你理解而避免在细节里越陷越深。上面的服务器可以做更多——可以运行你钟爱web框架所写基本的web应用,Pyramid,Flask,Django,或其他PythonWSGI框架.

不相信我?你自己试试看。保存上面的代码为webserver2.py或者直接在Github下载。如果你不传入任何参数它会提醒然后推出。

$pythonwebserver2.py

ProvideaWSGIapplicationobjectasmodule:callable

linuxdjangouwsgi+nginx怎么调试

1.python和django的环境搭建

(1)下载anaconda3并安装

wget

shAnaconda3-2.3.0-Linux-x86_64.sh

一路enter键,然后提示是否加入到环境变量时,输入yes即可。

(2)安装django

直接pipinstalldjango

安装成功之后就可以新建项目

django-adminstartprojectdemosite

cddemosite

pythonmanage.pystartappblog

pythonmanage.pymigrate(要执行这个命令,让django生成可运行的app,否则后面使用uwsgi会报错)

(3)运行django

pythonmanage.pyrunserver

curl127.0.0.1:8000进行如果可以正常访问,就说明django安装成功。

2.安装uwsgi

(1)centOS

yuminstallzlib-develbzip2-develpcre-developenssl-develncurses-develsqlite-develreadline-develtk-devel

pipinstalluwsgi

uwsgi--version#查看uwsgi版本

(2)test.py

然后,RunuWSGI:

uwsgi--http:8000--wsgi-filetest.py

defapplication(env,start_response):

start_response('200OK',[('Content-Type','text/html')])

return["HelloWorld"]#python2

#return[b"HelloWorld"]#python3

(3)ubuntu可以能会出现错误:

如果出现错误,!!!nointernalroutingsupport,rebuildwithpcresupport!!!

sudoapt-getinstalllibpcre3libpcre3-dev

sudopipuninstalluwsgi

sudoapt-getremoveuwsgi

sudopipinstalluwsgi

(4)测试

1)打开下面url,浏览器上应该显示helloworld

curl如果安装httpie模块的话使用http

如果显示正确是HelloWorld,说明上面的环节是畅通的

2)测试django

默认使用django新建工程会在app下面生成一个wsgi.py的文件

uwsgi--http:8000--wsgi-filewsgi.py直接这样也会报错

uwsgi--http:8000--wsgi-fileappname/wsgi.py

打开浏览器输入如果现实正确说明webclient--uwsgi---django是畅通的

3.安装配置nginx

(1)安装

wget

tarxfnginx-1.9.5.tar.gz

cdnginx-1.9.5

./configure--prefix=/usr/local/nginx--with-http_stub_status_module--with-http_gzip_static_module

makemakeinstall

或者参考

(2)配置文件

vi/usr/local/nginx/conf/nginx.conf

一般来说加入个server就OK了

参考配置如下

userroot;

worker_processes1;

#error_loglogs/error.log;

#error_loglogs/error.lognotice;

#error_loglogs/error.loginfo;

pidlogs/nginx.pid;

events{

useepoll;

worker_connections65535;

}

http{

includemime.types;

default_typeapplication/octet-stream;

#log_formatmain'$remote_addr-$remote_user[$time_local]"$request"'

#'$status$body_bytes_sent"$http_referer"'

#'"$http_user_agent""$http_x_forwarded_for"';

#access_loglogs/access.logmain;

sendfileon;

#tcp_nopushon;

#keepalive_timeout0;

keepalive_timeout65;

#gzipon;

server{

listen8099;

server_name10.117.52.157;##对外访问的IP和端口号

access_log/tmp/cms/access.log;

error_log/tmp/cms/error.log;

#charsetkoi8-r;

#access_loglogs/host.access.logmain;

location/{

includeuwsgi_params;

uwsgi_pass127.0.0.1:8088;

uwsgi_read_timeout300;

}

#error_page404/404.html;

#redirectservererrorpagestothestaticpage/50x.html

#

#error_page500502503504/registration/500.html;

#location=/registration/500.html{

#roothtml;

#}

location/static/{

alias/root/cms/cms/static/;

indexindex.htmlindex.htm;

}

location/media/{

alias/root/cms/cms/media/;

}

}

}

(3)运行and重启

/usr/local/nginx/sbin/nginx

启动:nginxstart

重启:nginx-sreload

4.使用uwsgi的配置文件运行django

在确保nginx运行之后,就可以通过uwsgi来运行django了。nginx在最外层接收请求,静态的自己处理,动态的通过socket端口交给uwsgi来处理。

配置文件内容如下

[uwsgi]

socket=:8088#要和nginx对应的IP和端口号一致

chdir=/root/cms/cms#APP的目录

module=cms.wsgi#wsgi.py文件位置

touch-reload=/root/cms/cms/reload#重启只要输入命令touchreload文件即可

processes=4

threads=2

daemonize=/tmp/cms/wsgi.log#日志文件位置

放在APP的上一级目录

直接运行uwsgi--iniuwsgi.ini即可

如何直接在浏览器中查看和调试Django

按照官网指导安装好django

启动本地服务

浏览器输入链接便可以访问

当改变代码时,相应的页面便会发生变化,可以讲代码调试部分作为页面输出,这样便可以看到执行结果

主要参考官网指导part1便可以

结语:以上就是首席CTO笔记为大家整理的关于django项目如何调试的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
"多难兴邦"这个词,让我们懂得了什么? uc怎么进入阅读模式 进入阅读模式方法介绍 uc怎么进入小说阅读模式 uc浏览器设置阅读模式-uc浏览器设置阅读模式方法 uc电脑阅读模式怎么设置电脑上UC浏览器的阅读模式怎么打开 微信怎么判断对方把你拉黑并且删除了,还是只是拉黑了? 公司诉讼由哪个法院管辖?公司诉讼管辖确定的理论依据? 笔记本电脑开机无法进入系统笔记本电脑开机后无法进入系统 从深圳到乌镇玩三天,花销最少是多少?越少越好,如果有个计划就更好乐 马上快过年放假了,第一次去见岳父,送茅台好还是五粮液好? django框架如何实现与数据库的交互(2023年最新整理) 我在观看钉钉直播时 QQ来消息 我不小心点开了它 但是我是通过后台返回的... 天汇宝的资金被用在哪里 天汇宝2号是什么 天汇宝什么 央企工作为什么不要轻易辞职? 为何央企不能轻易辞职? 天汇宝产品简介 ...北流 桂平 容县等地.四个人...请大家推荐一下路线和其他方面的建议... ...指点一下行程安排住宿及旅游线路!谢谢!大概8个人左右两天一夜从成都... 青岛市于家丰城有什么好玩的地方吗 玉华峰中华各地玉华山 空调外机不运行是不是省电些? 空调外机不停会不会影响耗电 空调外机一直运转不停,耗电吗? 24岁本命年要佩戴什么 本命年龙年男生要佩戴什么 男生本命年龙年佩戴什么好 24年本命年带什么好? 2024年龙年本命年佩戴什么2024年龙年本命年可以佩戴哪些饰品? 北京汽车bj40保养灯归零的方法是什么? 如何在公网ip上部署django(2023年最新分享) django的传参怎么国际化(2023年最新整理) 如何退出Django虚拟环境(2023年最新分享) django中怎么设置全局变量(2023年最新整理) B国货币对A国货币升值20%,是B国货币升值还是A国货币升值?如果是B... 如果A国攻打B国,那么他们的汇率是如何变动? 一个国家A向另一个国家B投资,国家A的货币变化是什么 ...天汇宝”与银行理财和一般券商理财产品有何区别? 天汇宝产品14天和60天哪个好一点 送女友的八大暖心礼物,送女友礼物排行榜 最打动女人心的生日礼物 ...后悔 艰涩 拖沓 磨练 埋怨 冷漠 失魂落魄 震耳欲聋 大吃一惊... 天天利财和金自来和天汇宝有风险吗 天汇宝产品特点 女生失眠的原因就三种 女生失眠睡不着什么原因 恒温恒湿空调与一般空调比有什么特点 中美技术脱钩对美国半导体产业影响几何? 责任担当方面精选102句 大学档案是自己拿着还是学校邮寄?