Python Django Web开发实战:从入门到上线
Django是一个高效且易于上手的Web开发框架。它内置了很多强大的功能,例如路由系统、模板引擎、ORM等。同时它还有很多第三方模块和插件可以使用,使得Web应用的开发变得更加快捷方便。
在这篇文章中,我们将会学习如何使用Django进行Web开发,从入门到上线。
准备工作
首先我们需要安装Python环境和Django。建议使用Python3,因为Python2已经不再被官方维护。
安装Python环境:
在官网下载Python3,安装即可。
安装Django:
使用pip命令安装Django:
pip install Django
创建Django项目
在命令行中输入以下命令,创建一个新的Django项目:
django-admin startproject myproject
其中myproject为项目名称,可以自定义。
创建Django应用
在命令行中进入myproject目录,输入以下命令,创建一个新的Django应用:
python manage.py startapp myapp
其中myapp为应用名,可以自定义。
配置Django应用
打开myproject/settings.py文件,修改以下内容:
- 将myapp添加到INSTALLED_APPS列表中
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp',
]
- 设置数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
这里我们使用了SQLite数据库,当然你也可以使用其他数据库,例如MySQL。
创建模型
模型是Django中的一个重要概念,它是ORM的核心。在Django中,我们可以通过定义模型类来创建数据库表。在myapp/models.py文件中定义模型类如下:
from django.db import models
class Blog(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
pub_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
这里我们定义了一个Blog模型类,它包含了三个字段:标题、内容和发布时间。其中,pub_date字段使用了auto_now_add选项,表示在创建对象时自动将该字段设置为当前时间。
创建数据库表
在命令行中输入以下命令,创建数据库表:
python manage.py makemigrations
python manage.py migrate
这样就可以将模型类映射到数据库表中了。
创建管理员用户
在命令行中输入以下命令,创建管理员用户:
python manage.py createsuperuser
按照提示输入用户名、电子邮件地址和密码,即可创建管理员用户。
创建视图
视图是Django中的另一个重要概念,它决定了Web应用程序如何响应请求。在myapp/views.py文件中定义视图函数如下:
from django.shortcuts import render
from django.http import HttpResponse
from .models import Blog
def index(request):
blogs = Blog.objects.all()
return render(request, 'index.html', {'blogs': blogs})
这里我们定义了一个index视图,它将所有的Blog对象查询出来,并渲染到模板中。
创建模板
模板是Django中用于显示HTML页面的组件。在myapp/templates目录中创建index.html文件,编写HTML页面如下:
{% for blog in blogs %}
{{ blog.title }}
{{ blog.content }}
{{ blog.pub_date }}
{% endfor %}
这里我们使用了Django模板语言来动态地生成HTML页面。
配置URL
URL是Django中用于路由请求的组件。在myproject/urls.py文件中配置URL如下:
from django.contrib import admin
from django.urls import path
from myapp import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.index),
]
这里我们将根URL映射到了index视图。
运行Django应用
在命令行中输入以下命令,启动Django应用:
python manage.py runserver
然后在浏览器中访问http://127.0.0.1:8000/即可看到我们编写的页面了。
部署Django应用
在开发完成后,我们需要将Django应用部署到生产环境中。这里我们使用Nginx和uWSGI来部署Django应用。
安装Nginx和uWSGI:
sudo apt-get install nginx
pip install uwsgi
配置Nginx:
在/etc/nginx/sites-available目录下创建myproject文件,写入以下内容:
server {
listen 80;
server_name example.com;
location / {
include uwsgi_params;
uwsgi_pass unix:/tmp/myproject.sock;
}
}
这里我们将服务器名设置为example.com,同时将请求转发到uWSGI服务器上。
配置uWSGI:
在myproject目录下创建uwsgi.ini文件,写入以下内容:
[uwsgi]
http-timeout = 3600
socket = /tmp/myproject.sock
chmod-socket = 666
chdir = /path/to/myproject
module = myproject.wsgi:application
master = true
processes = 4
threads = 2
这里我们将socket设置为/tmp/myproject.sock,同时开启了4个进程和2个线程来处理请求。
启动uWSGI:
在命令行中输入以下命令,启动uWSGI服务器:
uwsgi --ini uwsgi.ini
重启Nginx:
在命令行中输入以下命令,重启Nginx服务器:
sudo service nginx restart
现在我们的Django应用已经成功部署到生产环境中了!
总结
在这篇文章中,我们学习了如何使用Django进行Web开发,从创建项目到部署应用。Django内置了很多功能和组件,使得Web应用的开发变得更加快捷方便。希望本文能对刚开始学习Django的同学有所帮助。