Django Widget Tweaks를 사용하여 Django 양식을 사용자 정의하는 방법

Django는 대부분의 기능이 프레임워크 자체에 의해 이미 수행되거나 자동화되기 때문에 "배터리 포함"프레임워크입니다.
이렇게 하면 개발자가 제안된 기한까지 작업을 완료하는 것이 더 간단해집니다.

Django에는 ModelForm 클래스를 사용하여 모델에서 데이터를 렌더링할 수 있는 양식을 활성화하는 많은 옵션이 있습니다.

그러나 Django 양식은 다음을 사용하여 자동화할 수 있습니다.
  • {{form.as_p}} - 양식을 단락으로 렌더링
  • {{form.as_table}} - 양식을 테이블로 렌더링
  • {{form.as_ul}} - 양식을 목록으로 렌더링

  • 그러나 이 모든 것은 Django 양식을 암묵적으로 자동화합니다. 예를 들어 Model Form을 사용하고 form.as_p를 사용하여 Django 양식을 만듭니다....

    models.py

    from django.db import models
    
    class Post(models.Model):
        firstname = models.CharField()
        lastname = models.CharField()
        email = models.EmailField()
    
        def __str__(self):
            return self.firstname
    


    form.py

    from django import forms
    from .models import Post
    
    class PostForm(forms.ModelForm):
        class Meta:
            model = Post
            fields = ['posts', 'caption']
    


    views.py

    
    def getPost(request):
        post = Post.objects.all()
        context = {
            'post':post
        }
        return render(request,'post_form.html',context)
    


    post_form.html

    <div class="col-md-4">
      <form class="form" method="post" enctype="multipart/form-data">
         {% csrf_token %}
         <fieldset class="form-group">
           <legend class="text-center mb-4">Upload Post</legend>
           {{form.as_p}}
         </fieldset>
    
         <button type="submit" class="btn btn-primary">Post</button>
      </form>
    </div>
    


    Django 자체를 사용하여 자동화하는 대신 고유한 HTML 양식을 사용한다고 가정합니다.
    예: HTML 형식

    <form action="">
      <label for="fname">First name:</label><br>
      <input type="text" id="fname" value="John"><br><br>
      <label for="lname">Last name:</label><br>
      <input type="text" id="lname" value="Doe"><br><br>
      <label for="email">Email:</label><br>
      <input type="email" id="email" value="[email protected]"><br><br>
      <input type="submit" value="Submit">
    </form>
    


    이 양식을 렌더링하려면 Django Tweaks 이라는 Django 패키지를 사용해야 합니다.
    pip install django-widget-tweaks
    그런 다음 settings.py에 추가하십시오.

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
    
        #New
        'widget_tweaks'
    ]
    


    그리고 템플릿에서 다음과 같이 로드하는 것을 잊지 마십시오.{% load widget_tweaks %}
    Django Tweaks 라이브러리에는 양식을 사용자 지정하는 두 가지 옵션이 있습니다.

    render_field 사용



    <form>
       <div class="form-group">
         {% render_field form.firstname class="form-control" 
         placeholder=form.firstname.label type="text" %}
       </div>
    
       <div class="form-group">
         {% render_field form.lastname class="form-control" 
         placeholder=form.lastname.label type="text" %}
       </div>
    
       <div class="form-group">
         {% render_field form.email class="form-control" 
         placeholder=form.email.label type="email" %}
       </div>
    </form>
    

    템플릿 필터 사용



    위의 post_form.html 파일에서 form.as_p를 다음으로 바꿉니다.

    {% for hidden in form.hidden_fields %}
      {{ hidden }}
    {% endfor %}
    
    {% for field in form.visible_fields %}
      <div class="form-group">
        <label for="{{ field.id_for_label }}">{{ field.label }}</label>
        {{ field|add_class:'form-control' }}    
        {% for error in field.errors %}
          <span class="help-block">{{ error }}</span>
        {% endfor %}
      </div>
    {% endfor %}
    


    Django 조정 라이브러리는 HTML 양식을 사용자 지정하는 데 사용하는 필수 도구이며 선택한 모든 양식에 유연합니다.

    참조
  • Documentation
  • geeksforgeeks
  • javatpoint
  • 좋은 웹페이지 즐겨찾기