1. Django框架入门
Django 是一个高级 Web 框架,基于 Python 语言实现,其主要目标是使开发复杂的 Web 应用程序更容易、更快捷。本文将为大家介绍 Django 框架的入门使用。
1.1 安装 Django
如果您已安装了 Python,可以通过 pip 包管理器安装 Django。
$ pip install Django
1.2 创建 Django 项目
在 Django 中,一个项目由多个应用程序组成。下面是创建一个 Django 项目的步骤:
1. 找一处合适的地方创建项目文件夹,例如 /home/user/django_projects/ 。
2. 在终端中进入文件夹,运行以下命令,在 /home/user/django_projects/ 目录下创建一个名为 mysite 的项目:
$ django-admin startproject mysite
1.3 运行 Django 项目
运行以下命令来启动 Django 开发服务器:
$ python manage.py runserver
通过浏览器访问 http://127.0.0.1:8000/ 可以看到 Django 的欢迎页面。
2. Django 应用程序
在 Django 中,应用程序是项目的组成部分。每一个应用程序都是一个相对独立的模块,用来实现一个特定的功能。
2.1 创建 Django 应用程序
在 mysite 项目下创建一个新的 polls 应用程序:
$ python manage.py startapp polls
2.2 编写应用程序视图函数
在 polls 应用程序中创建一个名为 views.py 的文件,并编写如下代码:
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
2.3 编写应用程序 URL 配置
在 polls 应用程序中创建一个名为 urls.py 的文件,并编写如下代码:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
2.4 添加应用程序到 Django 项目中
在 mysite 项目的 settings.py 文件中 INSTALLED_APPS 列表中添加 polls 应用程序:
INSTALLED_APPS = [
'polls.apps.PollsConfig', # new
'django.contrib.admin',
'django.contrib.auth',
...
]
2.5 运行应用程序
重新运行 Django 开发服务器,访问 http://127.0.0.1:8000/polls 可以看到应用程序输出的 "Hello, world. You're at the polls index."。
3. Django 模型
在 Django 中,模型是面向对象地描述数据的方式。一个模型类代表一个数据库表,模型中的字段代表表中的列。
3.1 创建模型
在 polls 应用程序的 models.py 文件中创建一个模型类:
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
3.2 在数据库中创建模型
运行以下命令,将模型同步到数据库中:
$ python manage.py makemigrations polls
$ python manage.py migrate
3.3 在 Django 后台管理中添加模型管理
在 polls 应用程序的 admin.py 文件中注册 Question 和 Choice 模型:
from django.contrib import admin
from .models import Question, Choice
admin.site.register(Question)
admin.site.register(Choice)
3.4 运行 Django 后台管理
运行以下命令启动 Django 开发服务器,并访问 http://127.0.0.1:8000/admin/ 进入 Django 后台管理:
$ python manage.py runserver
3.5 创建模型的查询 API
在 polls 应用程序的 views.py 文件中编写如下代码:
from django.shortcuts import render
from .models import Question
def index(request):
latest_question_list = Question.objects.order_by('-pub_date')[:5]
context = {'latest_question_list': latest_question_list}
return render(request, 'polls/index.html', context)
def detail(request, question_id):
question = Question.objects.get(pk=question_id)
return render(request, 'polls/detail.html', {'question': question})
def results(request, question_id):
question = Question.objects.get(pk=question_id)
return render(request, 'polls/results.html', {'question': question})
4. Django 模板
Django 模板是一种快速生成 HTML 的方式,模板系统可以直接访问模型数据。
4.1 创建模板
在 polls 应用程序的 templates/polls 目录下创建以下三个模板文件:index.html、detail.html 和 results.html。
4.2 编写模板代码
在 index.html 文件中编写以下代码:
{% if latest_question_list %}
<ul>
{% for question in latest_question_list %}
<li><a href="{% url 'polls:detail' question.id %}">{{ question.question_text }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>No polls are available.</p>
{% endif %}
在 detail.html 文件中编写以下代码:
{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}
<h1>{{ question.question_text }}</h1>
<form action="{% url 'polls:vote' question.id %}" method="post">
{% csrf_token %}
{% for choice in question.choice_set.all %}
<input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}">
<label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br>
{% endfor %}
<input type="submit" value="Vote">
</form>
在 results.html 文件中编写以下代码:
<h1>{{ question.question_text }}</h1>
<ul>
{% for choice in question.choice_set.all %}
<li>{{ choice.choice_text }} -- {{ choice.votes }} vote{{ choice.votes|pluralize }}</li>
{% endfor %}
</ul>
<a href="{% url 'polls:detail' question.id %}">Vote again?</a>
结论
本文介绍了 Django 框架的入门使用,详细地讲解了如何创建 Django 项目和应用程序、创建模型和数据表,以及如何通过模板系统快速生成 HTML。当然,这只是 Django 的冰山一角,Django 还有大量的高级功能等待开发者去发掘。