Hướng dẫn xây dựng Django forms cơ bản

Ở bài viết trước, chúng ta đã có những tìm hiểu sơ lược về Django forms và bây giờ chúng ta sẽ tìm hiểu kỹ hơn về cách để xây dựng forms trên Django.

Xây dựng forms:

Đầu tiên, bạn tạo một cái form đơn giản trên website nhằm để lấy tên người dùng:

<form action="/your-name/" method="post">
    <label for="your_name">Your name: </label>
    <input id="your_name" type="text" name="your_name" value="{{   current_name }}">
    <input type="submit" value="OK">
</form>

Đoạn mã trên sẽ yên cầu trình duyệt trả lại dữ liệu form về URL/your-name/, bằng cách dùng POST thì bạn sẽ có một trường văn bản chứa tên của mình.

Đưa HTML form vào trong Django với forms.py:

from django import forms

class NameForm(forms.Form):
    your_name = forms.CharField(label='Your name', max_length=100)
Ở đây độ dài tối đa sẽ được xác đinh bằng max_length và mỗi form thì sẽ đều có phương thức is_valid() để chạy quy trình xác thực cho các trường trong forms. Toàn bộ forms khi được hiển thị lần đầu tiên sẽ như sau:
<label for="your_name">Your name: </label>
<input id="your_name" type="text" name="your_name" maxlength="100"   required>

Chế độ xem:

Khi dữ liệu được gửi trở lại trang web Django để xử lý thì chúng ta cần khởi tạo nó trong dạng xem cho URL:

from django.http import HttpResponseRedirect
from django.shortcuts import render

from .forms import NameForm

def get_name(request):
    # Nếu đây là POST yêu cầu thì chúng ta cần xử lý dữ liệu
    if request.method == 'POST':
        # Tạo form thể hiện dữ liệu từ yêu cầu 
        form = NameForm(request.POST)
        # Kiểm tra xem có hợp lệ hay không
        if form.is_valid():
            # xử lý dữ liệu form.cleaned_data theo yêu cầu
            # ...
            # chuyển hướng tới URL mới:
            return HttpResponseRedirect('/thanks/')

    # Nếu nhận được GET (hoặc các method khác) thì chúng ta sẽ tạo một form mới if a GET (or any other method) we'll create a blank form
    else
        form = NameForm()
    return render(request, 'name.html', {'form': form})

Thông tin thêm về lớp và trường trong Django:

Tất cả các biểu mẫu của Django thì hầu như được tạo thành từ dưới dạng lớp con của một trong hai: django.forms.Form hoặc django.form.ModelForm.

Biểu mẫu khi không liên kết thì sẽ không có dữ liệu, nếu người dùng truy cập vào nó sẽ trống hoặc chứa các giá trị mặc định. Và thuộc tính is_bound sẽ cho bạn biết liệu form có dữ liệu liên kết với nó.

Trước đó chúng ta chỉ có một trường duy nhất là /your-name/ nên giờ chúng ta hãy thử với đoạn bên dưới với nhiều trường hơn: subject, message, sender.

from django import forms

class ContactForm(forms.Form):
    subject = forms.CharField(max_length=100)
    message = forms.CharField(widget=forms.Textarea)
    sender = forms.EmailField()
    cc_myself = forms.BooleanField(required=False)

Xem lại: giới thiệu về Django form Nguồn: django tutorial

Công nghệ được nhắc đến trong bài viết này

Tên Công NghệPhiên BảnPhát Hành
Django---
HTML---
3 phút đọc·400 lượt xem·