Django 4.0 Form中template_name使用

今天主要抽空验证Django 4.0中一个新feature,Form中template_name的使用。

本文分3部分:

第1部分记录一下使用Django 4.0创建一个hello world项目的步骤;

第2部分添加一个form并展示;

第3部分验证一下template_name功能。

第一步 建立环境(使用Django4.0创建一个hello world项目)

1. Python 3.8.9 中创建一个虚拟环境:

python -mvenv Django40

2. 下载安装Django 4.0.2:

pip install django

3. 创建一个新的project:

django-admin startproject django40

4. 进入django40文件夹后创建home app:

python manage.py startapp home

5. Setting中加入home

INSTALLED_APPS = [
    'home.apps.HomeConfig',
    …
]

6. Django 4.0的url中定义好home的path

path('home',include('home.urls')),

7. Home中的url.py

from django.urls import path
from . import views
app_name="home"
urlpatterns = [
    path('', views.index, name='index'),
    ]

8. Home app中的view

  def index(request):
    context = {}
    return render(request,'home/index.html', context)

9. Template,在\home emplates\home文件夹中添加index.html,内容:

hello world

在控制台中python manage.py runserver

在浏览器中打开http://127.0.0.1:8000/home,看到hello world。准备工作完成了。

第二步 加入MyForm

1. 在home的文件夹内添加forms.py

from django import forms
 
class MyForm(forms.Form):
    message = forms.CharField(label='Message',max_length=100)
    name = forms.CharField(label='Name',max_length=50)

2. 在views.py中

def index(request):
    form_obj = MyForm()
    context = {
        'form':form_obj,
    }
    return render(request, 'home/index.html',context)

3. 在home的template文件夹index.html中

{{form}}
Django 4.0 Form中template_name使用

默认的Form样式

第三步 使用验证template_name

1. 在home的template文件夹中加入form_custom.html文件,内容为:

{% for field in form %}
    
        {{ field.errors }}
        {{ field.label_tag }} {{ field }}
    
{% endfor %}

2. 打开home的forms.py,加入template_name

from django import forms

class MyForm(forms.Form):
    template_name ="home/form_custom.html"  
    message = forms.CharField(label='Message',max_length=100)
    name = forms.CharField(label='Name', max_length=50)

浏览器中再次输入http://127.0.0.1:8000/home,从效果上可以看出来,我们已经使用自定义的模板文件了

Django 4.0 Form中template_name使用

使用自定义的Form样式

3. 如果form不使用template_name属性,像这样在index模板中直接引用自定义的模板文件也可以。

{%include "home/form_custom.html" %}

(完,更多文章可关注微信公众号:Django编程)

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章