วันอังคารที่ 12 กุมภาพันธ์ พ.ศ. 2562

test ครั้งที่ 1

ให้แสดงสูตรคูณโดยการรับเลขมาจาก url และรับมาจาก input แบบ text

เริ่มจาก

รับเลขจาก url มาแสดง 3 ตัว

ในไฟล์ index.html
ให้แสดงเลขที่รับมา 3 รอบแบบไม่เว้นบรรทัด

<h1>{{number}}</h1>

    <label >{{ number }}</label>
    <label >{{ number }}</label>
    <label >{{ number }}</label>

ในไฟล์ views.py
เมื่อมีการส่ง request เข้ามา ให้ส่งค่าตัวเลขจาก url มาด้วย และนำตัวเลขนั้นไปใส่ลงใน context เพื่อส่งค่าไปใช้ที่ index.html

def show(request,id):
    context = {'number': id }
    return render(request, 'mulnum/index.html', context)

ในไฟล์ urls.py
ในการเรียก url ให้ใส่ตัวเลขลงมาด้วย
app_name = 'm'
urlpatterns = [
    path('<int:id>/', views.show, name='index'),

]

การแสดงผลการทำงาน เมื่อรับเลข 1 จาก url มา จะส่งไปให้ฟังก์ชัน
ทำการแสดงค่าผ่านเทมเพลตที่ชื่อว่า index.html


รับเเลขจาก input แบบ text มาแสดง 3 ตัว

ในไฟล์ index.html
เพิ่มในส่วนของ <form> เข้ามารับค่า input แบบ text

<h1>NUMBER</h1>

<body>
<form action= "{% url 'm:mult' %}" method="post">
        {% csrf_token %}
        <input type="text" name="inte"  >
        <input type="submit" value="SHOW">
</form>
</body>

    <label >{{ number }}</label>
    <label >{{ number }}</label>
    <label >{{ number }}</label>

ในไฟล์ views.py
สร้างฟังก์ชันให้แสดงส่วนรับ input เข้ามา และเปลี่ยนให้ context ที่นำไปแสดงผลเป็นค่าที่มาจากการป้อน input โดยการเรียก request.POST['inte']

def inputnum(request):
    return render(request,'mulnum/index.html')

def show(request):
    context = {'number': request.POST['inte'] }
    return render(request, 'mulnum/index.html', context)

ในไฟล์ urls.py
เพิ่ม path โดย input/ คือการแสดงช่อง text ที่ใช้รับ input และ mult/ คือ ให้แสดงตัวเลขที่รับมา 3 ครั้ง

app_name = 'm'
urlpatterns = [
    path('input/', views.inputnum, name='index'),
    path('mult/',views.show, name='mult')

]

    ใส่เลข 5 ลงในช่อง text
   แสดงผลเป็นเลข 5 3 ตัว



 แสดงสูตรคูณโดยการรับเลขมาจาก url

views.py
เพิ่ม loop ให้ id ที่รับมานำมาคูณกับเลขตั้งแต่ 1 - 12 และเก็บแต่ละค่าลงใน list ชื่อ number และส่ง id , number ให้แสดงผลโดยใช้เทมเพลต index.html

def show(request,id):
    number = []
    for i in range(1,13):
        ans = id * i
        number.append(ans)
    context = {
        'id': id,
        'num': number
    }
    return render(request, 'mulnum/index.html', context)

ในไฟล์ index.html
ให้แสดงสูตรคูณไว้ตรงกลางหน้าต่างแสดงผลโดยการวน loop

<h1>NUMBER</h1>

{% for i in num %}
    <center>{{id}} x {{forloop.counter}} = {{i}}</center>
    <br>
{% endfor %}
 

ในไฟล์ urls.py
ในการเรียก url ให้ใส่ตัวเลขลงมาด้วย
app_name = 'm'
urlpatterns = [
    path('<int:id>',views.show,name='mul'),

]

การแสดงผลเมื่อในเลข 4 ลงไปใน url

 แสดงสูตรคูณโดยการรับเลขมาจาก input แบบ text

ใน index.html
เพิ่มส่วนที่สร้าง input แบบ text โดยให้ไปทำฟังก์ชันที่เกี่ยวข้องกันกับ url name mult

<h1>NUMBER</h1>
<head>
    <meta charset="UTF-8">
</head>
<body>
<form action= "{% url 'm:mult' %}" method="post">
        {% csrf_token %}
        <input type="text" name="inte"  >
        <input type="submit" value="SHOW">
    </form>
</body>

<hr>

{% for i in num %}
    <center>{{id}} x {{forloop.counter}} = {{i}}</center>
    <br>
{% endfor %}
    

ใน views.py
ฟังก์ชันแรกให้แสดง textbox สำหรับให้ผู้ใช้ใส่ตัวเลขลงไป ส่วนอีกฟังก์ชันเป็นการรับค่าจาก text ที่ผู้ใช้ใส่ลงไปมาแสดงผลเป็นสูตรคูณ

def inputnum(request):
    return render(request,'mulnum/index.html')

def mul(request):
    number = []
    for i in range(1,13):
        ans = int(request.POST['inte']) * i
        number.append(ans)
    context = {
        'id': request.POST['inte'],
        'num': number
    }
    return render(request, 'mulnum/index.html', context)

ใน urls.py
เพิ่ม path mult ให้เชื่อมกันกับฟังก์ชัน mul ที่ทำการคูณค่าและเก็บไว้ใน context

app_name = 'm'
urlpatterns = [
    path('input/', views.inputnum, name='index'),   # show text box
    path('<int:id>',views.show,name='mul'),         #multiplication by number in url
    path('mult/',views.mul,name='mult'),            #multiplication by number from text box
 
]

การแสดงผลก่อนในเลขลงใน textbox

เมื่อใส่เลข 16 ลงไปและกด SHOW





 

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

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