欢迎进入Django的世界,这是一个帮助你以最少的代码构建强大网站的神奇框架。在这篇博客中,我们将从零开始创建一个基本的Web应用程序。

安装Django

首先,确保你的Python环境已安装Django。你可以使用pip来安装:

pip install django

创建一个新的Django项目

安装好Django后,可以使用其自带的命令行工具来创建一个新项目:

django-admin startproject mysite

这将会创建一个名为mysite的新文件夹,其中包含了项目的基本结构。

启动开发服务器

切换到目录中,启动Django的开发服务器:

cd mysite
python manage.py runserver

你的服务器现在应该在本地运行,在浏览器中访问http://127.0.0.1:8000/,你应该会看到Django的欢迎页面。

创建一个应用

Django项目由多个应用程序组成,每个应用程序都执行一个功能。创建你的第一个应用:

python manage.py startapp webapp

定义视图

在你的应用文件夹webapp内,找到views.py文件,定义一个视图:

from django.http import HttpResponse

def home(request):
    return HttpResponse("<h1>Welcome to my first Django app!</h1>")

配置URLs

要让你的视图可见,你需要将其映射到一个URL。首先,在你的应用文件夹内创建一个urls.py文件:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='home'),
]

然后,在项目的urls.py文件(不是app的urls.py)中,包含你刚创建的webapp.urls

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('webapp.urls')),
]

模板和静态文件

创建一个名为templates的文件夹在你的应用文件夹内,并在其中创建一个home.html文件:

<!DOCTYPE html>
<html>
<head>
    <title>My First Django App</title>
</head>
<body>
    <h1>Welcome to my first Django app!</h1>
</body>
</html>

更新你的视图使用这个模板:

from django.shortcuts import render

def home(request):
    return render(request, 'home.html')

管理后台

Django自带一个管理后台,非常适合管理网站的内容。首先需要创建管理员账号:

python manage.py createsuperuser

按提示输入用户名和密码,然后你可以通过http://127.0.0.1:8000/admin来访问管理后台。

测试你的应用

Django有一个内置的测试框架,可以创建测试来确保你的应用正常工作。在你的应用中创建一个tests.py文件,并编写一个简单的测试:

from django.test import TestCase
from django.urls import reverse

class HomePageTests(TestCase):

    def test_home_page_status_code(self):
        response = self.client.get('/')
        self.assertEquals(response.status_code, 200)

    def test_view_url_by_name(self):
        response = self.client.get(reverse('home'))
        self.assertEquals(response.status_code, 200)

运行测试:

python manage.py test

结语

现在你已经成功创建了一个基本的Django Web应用程序。虽然这只是框架功能的冰山一角,但你应该对如何开始使用Django有了基础的了解。