如何使用django搭建本地服务器(2023年最新解答)

兄弟有没有人讲详细点的,我想说下,如何使用django搭建本地服务器(2023年最新解答)
最新回答
失意的片刻

2024-09-21 14:28:55

导读:本篇文章首席CTO笔记来给大家介绍有关如何使用django搭建本地服务器的相关内容,希望对大家有所帮助,一起来看看吧。

如何将django用apache2部署在亚马逊的服务器上

使用mod_python部署

1.为了配置基于mod_python的Django,首先要安装有可用的mod_python模块的

Apache。

2.然后应该有一个LoadModule指令在Apache配置文件中。它看起来就像是这样:

LoadModulepython_module/usr/lib/apache2/modules/mod_python.so

3.配置Apache,用来定位请求URL到Django应用:

VirtualHost*:80

ServerName

Location"/python1"

SetHandlerpython‐program

PythonHandlerdjango.core.handlers.modpython

SetEnvDJANGO_SETTINGS_MODULEpython1.settings

PythonAutoReloadOff

PythonDebugOff

PythonPath"['/var/www/html/python1']+sys.path"

PythonInterpreterpython1

/Location

Location"/python2"

SetHandlerpython‐program

PythonHandlerdjango.core.handlers.modpython

SetEnvDJANGO_SETTINGS_MODULEpython2.settings

PythonAutoReloadOff

PythonDebugOff

PythonPath"['/var/www/html/python2']+sys.path"

PythonInterpreterpython2

/Location

[......]

/VirtualHost

它告诉Apache,任何在/python这个路径之后的URL都使用Django的mod_python来处理。

它将DJANGO_SETTINGS_MODULE的值传递过去,使得mod_python知道这时应该使用哪个配置。

查看mod_python文档获得详细的指令列表。

4.重启Apache,查看:"target="_blank":

/etc/init.d/apache2restart

使用mod_wsgi部署

1.下载安装mod_wsgi模块,生成mod_wsgi.so和wsgi.conf

2.在配置中加载模块:

LoadModulepython_module/usr/lib/apache2/modules/mod_wsgi.so

3.修改Apache配置文件httpd.conf

VirtualHost*:80

ServerName

DocumentRoot/var/www/html/python

WSGIScriptAlias//var/www/html/python/apache/django.wsgi

Directory/

Orderdeny,allow

Allowfromall

/Directory

Directory/apache

Allowfromall

/Directory

/VirtualHost

4.创建并配置wsgi的配置文件:

#filename:python.apache.django.wsgi

importos,sys

#CalculatethepathbasedonthelocationoftheWSGIscript.

apache_configuration=os.path.dirname(__file__)

project=os.path.dirname(apache_configuration)

workspace=os.path.dirname(project)

sys.path.append(workspace)

os.environ['DJANGO_SETTINGS_MODULE']='python.settings'

os.environ['PYTHON_EGG_CACHE']='/tmp'

importdjango.core.handlers.wsgi

application=django.core.handlers.wsgi.WSGIHandler()

printsys.stderr,sys.path

shellchmoda+xdjango.wsgi

5.修改Django项目配置文件settings.py:

DATABASES={

'default':{

'ENGINE':'django.db.backends.mysql',

'NAME':'python',

'USER':'admin',

'PASSWORD':'admin123',

'HOST':'127.0.0.1',

'PORT':'3306',}

}

TEMPLATE_DIRS=(

'/var/www/html/python/templates',

)

6.重启Apache,访问

/etc/init.d/apache2restart

Django部署——uwsgi+Nginx(超详细)

环境:

python3.6

centos7

Django1.11

用Django写了个小网站,只能在自己本地跑一跑!这怎么行?听说可以部署在云服务器上,这样别人就可以访问了!

从哪儿开始?就从Django开始吧!老规矩,按步骤:

这里不讲Django项目实施过程,假设你已经写了一个Django项目,并且在本地127.0.0.1:8000能够跑起来。喏,给你个参考,项目大概长这样:

也就是项目目录下的settings.py文件,主要强调几个地方:

①关闭DEBUG模式:

②修改ALLOWED_HOSTS:

③配置静态文件存放路径:

修改好配置之后执行:

这个没什么说的。。。在自己的云服务器上装好这两个工具

安装好uwsgi后最好验证一下,验证方法:

创建一个test.py文件:

启动uwsgi服务器:

如果可以正常启动而不报错那就应该没问题,不放心的话再在终端验证一下:

在uwsgi.ini里进行如下配置:

找到nginx的配置文件夹,centos7的nginx配置文件在/etc/nginx下,该路径下有一个nginx.conf总配置文件,还有两个文件夹./conf.d、./default.d,我们将nginx.conf复制一份到conf.d文件夹下,命名为nginx.conf(或者项目名.conf)进行如下修改(根据中文注释进行相应配置即可):

进入uwsgi.ini文件夹下执行:

在终端执行:

参考资料:

刘江的博客

博客园

知乎问答

无名Blog

自强学堂Django教程

Django文档

empty_xlBlog

用pyqt做好了前端,想用django做服务器,想问一下大概怎么搭建呢?

一般客户端(也就是你说的前段)跟服务器端(你准备使用Django)都是通过HTTP协议交换信息的(除非有特别的需求,才会使用别的或者定制协议)。

在客户端(PyQT)中,你可以安装Requests库,它可以帮助你发送HTTP请求给服务器端,

在Django中你可以使用DjangoRESTFramework网页链接处理客户端的HTTP请求。

如何在服务器上部署Django项目并使其在后台一直运行

前几天老师让我把一个Django项目(爬虫网页)放到校园内网上,但是我想先用自己的服务器来尝试一下。之前刚好有在DigitalOcean上买过服务器用来运行ss脚本,平时服务器一直放着没啥用,所以就拿它来试验一下。

废话不多说,第一步通过WinSCP软件把Django文件传到服务器上。

在服务器中安装Django需要的环境和我所需要的Python第三方库。

以上所有步骤完成后,还需要进行一步操作,这是我经历的一个坑。打开Django文件目录中的settings.py,把ALLOWED_HOSTS=[]改为ALLOWED_HOSTS=["*"]。

在服务器中打开到manage.py所在的目录,输入命令:

python3manage.pyrunserver0.0.0.0:8000

然后按下回车,在浏览器中输入:该服务器IP地址:8000,大功告成!

Attention:

1.python3不是特定的,是根据你的Django项目所需要的环境指定的。

2.8000是端口号,可以修改。

如果想要Django项目一直运行,关闭终端后还在运行,即需要运行如下命令,nohupcommand,command即位上文所说的python3manage.pyrunserver0.0.0.0:8000。

如何创建一个Django网站

本文演示如何创建一个简单的django网站,使用的django版本为1.7。

1.创建项目

运行下面命令就可以创建一个django项目,项目名称叫mysite:

$django-admin.pystartprojectmysite

创建后的项目目录如下:

mysite

├──manage.py

└──mysite

├──__init__.py

├──settings.py

├──urls.py

└──wsgi.py

1directory,5files

说明:

__init__.py:让Python把该目录当成一个开发包(即一组模块)所需的文件。这是一个空文件,一般你不需要修改它。

manage.py:一种命令行工具,允许你以多种方式与该Django项目进行交互。键入pythonmanage.pyhelp,看一下它能做什么。你应当不需要编辑这个文件;在这个目录下生成它纯是为了方便。

settings.py:该Django项目的设置或配置。

urls.py:Django项目的URL路由设置。目前,它是空的。

wsgi.py:WSGIweb应用服务器的配置文件。更多细节,查看HowtodeploywithWSGI

接下来,你可以修改settings.py文件,例如:修改LANGUAGE_CODE、设置时区TIME_ZONE

SITE_ID=1

LANGUAGE_CODE='zh_CN'

TIME_ZONE='Asia/Shanghai'

USE_TZ=True

上面开启了[Timezone]()特性,需要安装pytz:

$sudopipinstallpytz

2.运行项目

在运行项目之前,我们需要创建数据库和表结构,这里我使用的默认数据库:

$pythonmanage.pymigrate

Operationstoperform:

Applyallmigrations:admin,contenttypes,auth,sessions

Runningmigrations:

Applyingcontenttypes.0001_initial...OK

Applyingauth.0001_initial...OK

Applyingadmin.0001_initial...OK

Applyingsessions.0001_initial...OK

然后启动服务:

$pythonmanage.pyrunserver

你会看到下面的输出:

Performingsystemchecks...

Systemcheckidentifiednoissues(0silenced).

January28,2015-02:08:33

Djangoversion1.7.1,usingsettings'mysite.settings'

Startingdevelopmentserverat

QuittheserverwithCONTROL-C.

这将会在端口8000启动一个本地服务器,并且只能从你的这台电脑连接和访问。既然服务器已经运行起来了,现在用网页浏览器访问。你应该可以看到一个令人赏心悦目的淡蓝色Django欢迎页面它开始工作了。

你也可以指定启动端口:

$pythonmanage.pyrunserver8080

以及指定ip:

$pythonmanage.pyrunserver0.0.0.0:8000

3.创建app

前面创建了一个项目并且成功运行,现在来创建一个app,一个app相当于项目的一个子模块。

在项目目录下创建一个app:

$pythonmanage.pystartapppolls

如果操作成功,你会在mysite文件夹下看到已经多了一个叫polls的文件夹,目录结构如下:

polls

├──__init__.py

├──admin.py

├──migrations

│└──__init__.py

├──models.py

├──tests.py

└──views.py

1directory,6files

4.创建模型

每一个DjangoModel都继承自django.db.models.Model

在Model当中每一个属性attribute都代表一个databasefield

通过DjangoModelAPI可以执行数据库的增删改查,而不需要写一些数据库的查询语句

打开polls文件夹下的models.py文件。创建两个模型:

importdatetime

fromdjango.dbimportmodels

fromdjango.utilsimporttimezone

classQuestion(models.Model):

question_text=models.CharField(max_length=200)

pub_date=models.DateTimeField('datepublished')

defwas_published_recently(self):

returnself.pub_date=timezone.now()-datetime.timedelta(days=1)

classChoice(models.Model):

question=models.ForeignKey(Question)

choice_text=models.CharField(max_length=200)

votes=models.IntegerField(default=0)

然后在mysite/settings.py中修改INSTALLED_APPS添加polls:

INSTALLED_APPS=(

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'polls',

)

在添加了新的app之后,我们需要运行下面命令告诉Django你的模型做了改变,需要迁移数据库:

$pythonmanage.pymakemigrationspolls

你会看到下面的输出日志:

Migrationsfor'polls':

0001_initial.py:

-CreatemodelChoice

-CreatemodelQuestion

-Addfieldquestiontochoice

你可以从polls/migrations/0001_initial.py查看迁移语句。

运行下面语句,你可以查看迁移的sql语句:

$pythonmanage.pysqlmigratepolls0001

输出结果:

BEGIN;

CREATETABLE"polls_choice"("id"integerNOTNULLPRIMARYKEYAUTOINCREMENT,"choice_text"varchar(200)NOTNULL,"votes"integerNOTNULL);

CREATETABLE"polls_question"("id"integerNOTNULLPRIMARYKEYAUTOINCREMENT,"question_text"varchar(200)NOTNULL,"pub_date"datetimeNOTNULL);

CREATETABLE"polls_choice__new"("id"integerNOTNULLPRIMARYKEYAUTOINCREMENT,"choice_text"varchar(200)NOTNULL,"votes"integerNOTNULL,"question_id"integerNOTNULLREFERENCES"polls_question"("id"));

INSERTINTO"polls_choice__new"("choice_text","votes","id")SELECT"choice_text","votes","id"FROM"polls_choice";

DROPTABLE"polls_choice";

ALTERTABLE"polls_choice__new"RENAMETO"polls_choice";

CREATEINDEXpolls_choice_7aa0f6eeON"polls_choice"("question_id");

COMMIT;

你可以运行下面命令,来检查数据库是否有问题:

$pythonmanage.pycheck

再次运行下面的命令,来创建新添加的模型:

$pythonmanage.pymigrate

Operationstoperform:

Applyallmigrations:admin,contenttypes,polls,auth,sessions

Runningmigrations:

Applyingpolls.0001_initial...OK

总结一下,当修改一个模型时,需要做以下几个步骤:

修改models.py文件

运行pythonmanage.pymakemigrations创建迁移语句

运行pythonmanage.pymigrate,将模型的改变迁移到数据库中

你可以阅读django-admin.pydocumentation,查看更多manage.py的用法。

创建了模型之后,我们可以通过Django提供的API来做测试。运行下面命令可以进入到pythonshell的交互模式:

$pythonmanage.pyshell

下面是一些测试:

frompolls.modelsimportQuestion,Choice#Importthemodelclasseswejustwrote.

#Noquestionsareinthesystemyet.

Question.objects.all()

[]

#CreateanewQuestion.

#Supportfortimezonesisenabledinthedefaultsettingsfile,so

#Djangoexpectsadatetimewithtzinfoforpub_date.Usetimezone.now()

#insteadofdatetime.datetime.now()anditwilldotherightthing.

fromdjango.utilsimporttimezone

q=Question(question_text="What'snew?",pub_date=timezone.now())

#Savetheobjectintothedatabase.Youhavetocallsave()explicitly.

q.save()

#NowithasanID.Notethatthismightsay"1L"insteadof"1",depending

#onwhichdatabaseyou'reusing.That'snobiggie;itjustmeansyour

#databasebackendpreferstoreturnintegersasPythonlonginteg