Add Record Trong Django

113 lượt xem Django

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:

Mẫu
Mẫu

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:

URLs
URLs

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:

Mã Để Thêm Bản Ghi
Mã Để Thêm Bản Ghi

Nếu bạn nhấn nút gửi, bảng thành viên sẽ được cập nhật:

Mã Để Thêm Bản Ghi
Mã Để Thêm Bản Ghi

Leave a Reply

Your email address will not be published. Required fields are marked *

PHP Code Snippets Powered By : XYZScripts.com
.
.
.
.