วันเสาร์ที่ 2 กุมภาพันธ์ พ.ศ. 2562

W6 UPDATE

หลังจากที่ได้สร้างคำถามและตัวเลือกไว้ในครั้งที่ผ่านมา คำถามและตัวเลือกสามารถเพิ่มและลบได้โดยการใช้งานผ่านส่วน admin หรือ API ครั้งนี้จะทำการเพิ่มและลบคำถามผ่านหน้าเว็บโดยการสร้างฟังก์ชันขึ้นมาใช้งานโดย

ส่วนการลบคำถาม
1 สร้าง template

<h1>Remove Question</h1>
<form action="{% url 'polls:remove' %}" method="post">
{% csrf_token %}
{% for question in latest_question_list %}
<input type="radio" name="question" value="{{ question.id }}">
<label for="{{ forloop.counter }}">{{ question.question_text }}</label>
<br>
{% endfor %}
<input type="submit" value="remove">
</form>

ให้ลบคำถามโดยการเลือกตัวเลือกแบบ radio ลบได้ครั้งละ 1 คำถาม

2.สร้างฟังก์ชันใน views.py

def removequestion(request):
question = Question.objects.all()
q_select = Question.objects.get(id=request.POST['question'])
q_select.delete()
return HttpResponseRedirect(reverse('polls:index'))

เมื่อมีการเรียกใช้งานฟังก์ชันให้ลบคำถามที่ถูกเลือกและแสดงหน้าลบคำถามเดิม

3. เพิ่ม url ที่เรียกใช้ฟังก์ชัน

from django.urls import path
from . import views
app_name = 'polls'
urlpatterns = [
path('', views.IndexView.as_view(), name='index'),
path('remove/',views.removequestion,name='remove'),
        ]
เมื่อเปิดหน้าแรกจะเรียกใช้ template แสดงหน้าการลบคำถามและมีการเรียกไปที่ url remove และเรียกใช้งานฟังก์ชัน removequestion และ reverse กลับไปที่หน้าลบคำถามหน้าเดิม

หน้าแรกก่อนลบคำถาม
เมื่อเลือกคำถามและ remove จะแสดงหน้าเดิมที่ถูกลบคำถามออกไปแล้ว


ส่วนการเพิ่มคำถาม

1 สร้าง template

<h1>Create Question</h1>
<form action="{% url 'polls:Addquest' %}" method="post">
{% csrf_token %}
<input type="text" name="addq" value="{{ addq.id }}">
<br><br>
<input type="submit" value="Create">
</form>

<h2>Question now : </h2>
{% if latest_question_list %}
<ul>
{% for question in latest_question_list %}
<li><a href="{% url 'polls:detail' question.id %}">{{ question.question_text }}</a></li>
{% endfor %}
</ul>
{% endif %}

ใน template แบ่งเป็น 2 ส่วน คือ ส่วนที่ให้เพิ่มคำถามที่ใช้ input แบบ text และส่วนที่แสดงคำถามที่มีอยู่เพื่อดูการเปลี่ยนแปลงว่าคำถามมีการเพิ่มขึ้นหรือไม่

2. สร้างฟังก์ชันใน views.py

def Add(request):
q = Question(question_text=request.POST['addq'], pub_date=timezone.now())
q.save()
return HttpResponseRedirect(reverse('polls:index'))

ให้เพิ่มคำถามโดยคำถามที่เพิ่มให้รับจาก text ที่พิมพืลงในส่วนของ input และทำการเพิ่มคำถาม

3. เพิ่ม url ที่เรียกใช้ฟังก์ชัน

from django.urls import path
from . import views
app_name = 'polls'
urlpatterns = [
path('', views.IndexView.as_view(), name='index'),
path('add/',views.Add,name='Addquest'),
        ]

เมื่อเปิดหน้าแรกจะเรียกใช้ template แสดงหน้าการเพิ่มคำถามและมีการเรียกไปที่ url Addquest และเรียกใช้งานฟังก์ชัน Add และ reverse กลับไปที่หน้าเพิ่มคำถามหน้าเดิม


พิมพ์คำถามที่ต้องการเพิ่ม

 เมื่อเลือก create จะแสดงหน้าเดิมที่ถูกเพิ่มคำถาม และแสดงคำถามที่ถูกเพิ่มขึ้นมา

ไม่มีความคิดเห็น:

แสดงความคิดเห็น