Thêm Bản Ghi
Cho đến nay, chúng tôi đã tạo một bảng Thành viên trong cơ sở dữ liệu của mình và chúng tôi đã chèn năm bản ghi bằng cách viết mã trong trình bao Python.
Chúng tôi cũng đã tạo một mẫu cho phép chúng tôi hiển thị nội dung của bảng trong một trang web.
Bây giờ chúng tôi muốn có thể tạo thành viên mới từ một trang web.
Mẫu
Bắt đầu bằng cách thêm một liên kết trong mẫu thành viên:
members/templates/index.html:
<h1>Members</h1> <table border="1"> {% for x in mymembers %} <tr> <td>{{ x.id }}</td> <td>{{ x.firstname }}</td> <td>{{ x.lastname }}</td> </tr> {% endfor %} </table> <p> <a href="add/">Add member</a> </p>
Kết quả sẽ như thế này:
Bản Mẫu Mới
Thêm một mẫu mới trong thư mục templates, có tên là add.html:
members/templates/add.html:
<h1>Add member</h1> <form action="addrecord/" method="post"> {% csrf_token %} First Name:<br> <input name="first"> <br><br> Last Name:<br> <input name="last"> <br><br> <input type="submit" value="Submit"> </form>
Mẫu chứa một biểu mẫu HTML trống với hai trường nhập và một nút gửi.
Lưu ý: Django yêu cầu dòng này ở dạng:
{% csrf_token%}
để xử lý Giả mạo yêu cầu chéo trang web trong các biểu mẫu có phương thức là POST.
Lượt Xem
Tiếp theo, thêm một chế độ xem trong tệp members/ views.py, đặt tên cho chế độ xem mới là add:
members/views.py:
from django.http import HttpResponse from django.template import loader from .models import Members def index(request): mymembers = Members.objects.all().values() template = loader.get_template('index.html') context = { 'mymembers': mymembers, } return HttpResponse(template.render(context, request)) def add(request): template = loader.get_template('add.html') return HttpResponse(template.render({}, request))
URLs
Thêm một hàm path () trong tệp members/ urls.py để trỏ url 127.0.0.1:8000/members/add/ đến đúng vị trí:
members/urls.py:
from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), path('add/', views.add, name='add'), ]
Trong trình duyệt, nhấp vào liên kết “Add member” và kết quả sẽ như thế này:
Các URL Khác
Bạn có nhận thấy thuộc tính action trong biểu mẫu HTML không? Thuộc tính action chỉ định nơi gửi dữ liệu biểu mẫu, trong trường hợp này, dữ liệu biểu mẫu sẽ được gửi đến addrecord /, vì vậy chúng ta phải thêm một hàm path () trong tệp members/ urls.py trỏ đến chế độ xem bên phải:
members/urls.py:
from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), path('add/', views.add, name='add'), path('add/addrecord/', views.addrecord, name='addrecord'), ]
Mã Để Thêm Bản Ghi
Cho đến nay, chúng tôi đã tạo giao diện người dùng và chúng tôi trỏ URL đến chế độ xem được gọi là addrecord, nhưng chúng tôi vẫn chưa tạo chế độ xem.
Đảm bảo rằng bạn thêm chế độ xem addrecord trong tệp members/ views.py:
members/views.py:
from django.http import HttpResponse, HttpResponseRedirect from django.template import loader from django.urls import reverse from .models import Members def index(request): mymembers = Members.objects.all().values() template = loader.get_template('index.html') context = { 'mymembers': mymembers, } return HttpResponse(template.render(context, request)) def add(request): template = loader.get_template('add.html') return HttpResponse(template.render({}, request)) def addrecord(request): x = request.POST['first'] y = request.POST['last'] member = Members(firstname=x, lastname=y) member.save() return HttpResponseRedirect(reverse('index'))
Các thay đổi được thực hiện trong tệp views.py:
- Dòng 1: nhập HttpResponseRedirect
- Dòng 3: nhập reverse
Dạng xem addrecord thực hiện như sau:
- Nhận họ và tên với câu lệnh request.POST.
- Thêm bản ghi mới trong bảng thành viên.
- Chuyển hướng người dùng trở lại chế độ xem index.
Hãy thử thêm một bản ghi mới và xem nó hoạt động như thế nào:
Nếu bạn nhấn nút gửi, bảng thành viên sẽ được cập nhật:
0 / 5 - (0 Đánh Giá)