使用Django搭建web服务器的例子(最最正确的方式)

请看下面的攻略,其中包含两个示例说明。

使用Django搭建web服务器的例子(最最正确的方式)

示例1:创建一个Django项目

  1. 安装Django

bash
pip install Django

  1. 创建Django项目

bash
django-admin startproject myweb

这里创建了名为myweb的Django项目。

项目的目录结构如下:

myweb/
manage.py
myweb/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py

  1. 创建一个Django应用

bash
cd myweb/
python manage.py startapp myapp

这里创建了名为myapp的应用。

项目的目录结构变成了下面这样:

myweb/
manage.py
myapp/
__init__.py
admin.py
apps.py
models.py
tests.py
views.py
myweb/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py

  1. 添加配置

打开myweb/settings.py,添加以下配置:

```python
INSTALLED_APPS = [
'myapp',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]

MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

TIME_ZONE = 'Asia/Shanghai'
```

这里添加了myapp应用,以及一些默认的中间件。

  1. 编写视图函数

在myapp/views.py中添加以下代码:

```python
from django.http import HttpResponse

def index(request):
return HttpResponse("Hello, world. Welcome to my web.")
```

  1. 添加URL

打开myweb/urls.py,添加以下代码:

```python
from django.urls import path
from myapp.views import index

urlpatterns = [
path('', index),
]
```

这里添加了一个URL路由,将“/”映射到index视图。

  1. 测试运行

输入以下命令启动web服务器:

bash
python manage.py runserver

然后在浏览器中访问http://localhost:8000/,应该会看到“Hello, world. Welcome to my web.”。

示例2:使用Nginx+uWSGI+Django部署生产环境

  1. 安装必要软件

bash
sudo apt-get update
sudo apt-get install nginx python3 python3-pip python3-dev build-essential libssl-dev libffi-dev

  1. 安装uWSGI

bash
sudo pip3 install uwsgi

  1. 配置uWSGI

在Django项目的根目录下创建uwsgi.ini文件,添加以下配置:

ini
[uwsgi]
socket = /tmp/myweb.sock
chdir = /path/to/myweb/project
wsgi-file = /path/to/myweb/project/myweb/wsgi.py
process = 4
threads = 2
master = true
pidfile = /tmp/myweb.pid
vacuum = true

这里配置了uWSGI监听在/tmp/myweb.sock上,项目的根目录为/path/to/myweb/project,使用wsgi.py作为入口,启动4个worker进程,每个进程使用2个线程。

  1. 编写Nginx配置

创建/etc/nginx/sites-available/myweb文件,添加以下内容:

```nginx
server {
listen 80;
server_name example.com;

   location / {
       uwsgi_pass unix:///tmp/myweb.sock;
       include uwsgi_params;
   }

}
```

这里配置了Nginx监听在80端口,将请求发送到uWSGI监听的sock文件上。

  1. 创建符号连接

将配置文件软链接到sites-enabled:

bash
sudo ln -s /etc/nginx/sites-available/myweb /etc/nginx/sites-enabled/

  1. 重启Nginx

bash
sudo systemctl restart nginx

  1. 启动uWSGI

在Django项目的根目录下启动uWSGI:

bash
uwsgi --ini uwsgi.ini

现在就可以访问http://example.com/来访问Django应用了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用Django搭建web服务器的例子(最最正确的方式) - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • python3+django2开发一个简单的人员管理系统过程详解

    我来为你详细讲解一下“Python3+Django2开发一个简单的人员管理系统”的完整攻略。 1. 环境搭建 首先,我们需要先安装Python3和Django2。如果你还没有安装过这两个库,可以参照以下步骤进行安装: 安装Python3:可到Python官网下载安装包,然后根据提示安装即可。 安装Django2:在终端或命令行中执行以下命令: $ pip i…

    Django 2023年5月16日
    00
  • Django笔记六之外键ForeignKey介绍

    这一篇笔记介绍 Django 系统 model 的外键处理,ForeignKey 以及相应的处理方法。 这是一种一对多的字段类型,表示两张表之间的关联关系。 本篇笔记的目录如下: on_delete related_name related_query_name 外键字段的保存 1、on_delete 假设有两个 application,app1 和 app…

    Django 2023年4月10日
    00
  • 1.初识 Django

    设计模式 定义 # mysite/news/models.py from django.db import models class Reporter(models.Model): full_name = models.CharField(max_length=70) def __str__(self): return self.full_name clas…

    Django 2023年4月10日
    00
  • Django 模板层(Template)

      一.使用模板的原因 对页面设计进行的任何改变都必须对 Python 代码进行相应的修改。 站点设计的修改往往比底层 Python 代码的修改要频繁得多,因此如果可以在不进行 Python 代码修改的情况下变更设计,那将会方便得多。 Python 代码编写和 HTML 设计是两项不同的工作,大多数专业的网站开发环境都将他们分配给不同的人员(甚至不同部门)来…

    Django 2023年4月10日
    00
  • 详解Django admin高级用法

    详解Django admin高级用法 Django admin是Django自带的管理员后台管理系统,可以方便地进行数据库管理,数据展示,数据处理等功能。本文将详细讲解如何使用Django admin的高级用法。 1. 自定义管理器 在Django admin中,如果希望对某个Model进行管理时,需要先创建一个管理器类,例如: from django.co…

    Django 2023年5月16日
    00
  • Django如何将自己的网站让其他主机访问

    ##第一点: 需要在你的setting.py文件中将按照如下设置: ALLOWED_HOSTS = [‘127.0.0.1’, ‘192.168.1.102’] 192.168.1.102是Django所在机器的IP  (此段验证未成功:或者在中括号中加入你在局域网中的IP。如我在局域网中的IP为192.168.10.133 所以设置ALLOWED_HOST…

    Django 2023年4月11日
    00
  • django系列6–Ajax05 请求头ContentType, 使用Ajax上传文件

    ContentType指的是请求体的编码类型,常见的类型共有三种: 1.application/x-www-form-urlencoded 这应该是最常见的 POST 提交数据的方式了。浏览器的原生 <form> 表单,如果不设置 enctype 属性,那么最终就会以 默认格式application/x-www-form-urlencoded 方…

    2023年4月9日
    00
  • [TimLinux] django html如何实现固定表头

    表格很长,这个时候就希望表格头部不动,而只是表格内容行支持滚动功能。 2. 方法 两张表:一张表(THeader)负责头部字段的显示,另一张表(TBody)负责内容行字段的显示。 两张表都存放在一个div中 THeader、TBody分别存放在一个div中 整个div不支持滚动条:overflow: hidden 包住TBody的div支持滚动条:overf…

    Django 2023年4月13日
    00
合作推广
合作推广
分享本页
返回顶部