步骤1:创建表单
在 helloworldapp/forms.py 中创建一个表单类,用于接收用户输入:
# helloworldapp/forms.py
from django import forms
class GreetingForm(forms.Form):
message = forms.CharField(label='Your Message', max_length=100)
步骤2:更新模型
在 helloworldapp/models.py 中,为 Greeting 模型添加一个方法,用于创建新的消息:
# helloworldapp/models.py
from django.db import models
class Greeting(models.Model):
message = models.TextField()
@classmethod
def create(cls, message):
greeting = cls(message=message)
return greeting
步骤3:更新视图
在 helloworldapp/views.py 中,更新 hello 视图函数,使其能够处理表单的提交:
# helloworldapp/views.py
from django.shortcuts import render, redirect
from .models import Greeting
from .forms import GreetingForm
def hello(request):
if request.method == 'POST':
form = GreetingForm(request.POST)
if form.is_valid():
message = form.cleaned_data['message']
Greeting.objects.all().delete() # 删除现有的消息
Greeting.objects.create(message=message) # 创建新的消息
return redirect('hello')
else:
form = GreetingForm()
greeting = Greeting.objects.first()
return render(request, 'helloworldapp/hello.html', {'greeting': greeting, 'form': form})
步骤4:更新模板
在 helloworldapp/templates/helloworldapp/hello.html 中,更新模板以显示表单并接受用户输入:
<!-- helloworldapp/templates/helloworldapp/hello.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hello Django</title>
</head>
<body>
<h1>{{ greeting.message }}</h1>
<form method="post" action="{% url 'hello' %}">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Update Message">
</form>
</body>
</html>
步骤5:配置 URL 路由
在 helloworldapp/urls.py 中,确保 URL 路由配置正确:
# helloworldapp/urls.py
from django.urls import path
from .views import hello
urlpatterns = [
path('hello/', hello, name='hello'),
]
步骤6:运行开发服务器
确保你的开发服务器正在运行:
python manage.py runserver
现在,你可以在浏览器中访问 http://127.0.0.1:8000/helloworld/hello/,应该能够看到消息和一个表单,通过表单你可以更新消息。
这样,你的 Django 应用已经包含了表单、处理用户输入的功能。在后续学习中,你可以进一步了解 Django 的用户认证、静态文件、部署等更高级的主题。
转载请注明出处:http://www.zyzy.cn/article/detail/7125/Django