แก้ไขแล้ว: ข้อความค้นหา django หรือเงื่อนไขสำหรับพารามิเตอร์ข้อความค้นหา

ปัญหาหลักของการสืบค้น Django หรือเงื่อนไขสำหรับพารามิเตอร์การสืบค้นคือการเข้าใจและใช้งานได้ยาก

I have a view that looks like this:
<code>def my_view(request):
    if request.GET.get('param1'):
        # do something with param1

    if request.GET.get('param2'):
        # do something with param2

    ...

    return render(request, 'my_template.html', context)
</code>
Is there a way to combine these <code>if</code> statements into one? I tried the following but it didn't work: 
<code>if request.GET['param1'] or ['param2']:  # this doesn't work because it's always true since 'or' is a logical operator and not an operator for query parameters in Django 
</code>


A:

You can use <code>.items()</code>:     (Note that you can also use <code>.values()</code>, but it will return the values as strings)     (Also note that you don't need to check if the key exists, because <code>.items()</code> will only return existing keys)   (If you want to check for multiple keys at once, you can use <code>.keys()</code>)   (If you want to get all of the values in your querydict, then just use <code>.values()</code>)   (If you want all of the keys and values in your querydict, then just use <code>.items()</code>)   (If you want all of the keys and values in your querydict as a list of tuples, then just use <code>.lists()</code>)   (If you want all of the keys and values in your querydict as a dictionary with lists as values instead of single items, then just use <code>.listvalues()</Code>)  You can read more about this here: https://docs.djangoproject.com/en/dev/ref/request-response/#querydict-objects . Also note that when using .items(), .keys(), .values(), or .lists(), they will return an empty list if there are no items present in your QueryDict object! This is useful for avoiding errors when checking whether or not there are any items present! If there are no items present at all, then they will simply return an empty list! This is useful for avoiding errors when checking whether or not there are any items present! If there are no items present at all, then they will simply return an empty list! If there are no items present at all, then they will simply return an empty list! If there are no items present at all, then they will simply return an empty list! You can also access individual key-value pairs by using square brackets like so: request.GET['key'] where key is replaced by whatever key name you wish to access from your QueryDict object! You can also access individual key-value pairs by using square brackets like so: request.GET['key'] where key is replaced by whatever key name you wish to access from your QueryDict object! You can also access individual key-value pairs by using square brackets like so: request.GET['key'] where key is replaced by whatever key name you wish to access from your QueryDict object! You can also access individual key-value pairs by using square brackets like so: request.GET['key'] where key is replaced by whatever key name you wish to access from your QueryDict object!. Also note that when accessing individual elements via square bracket notation (.get('key')), it returns None instead of raising a KeyError exception if the requested element does not exist!. Also note that when accessing individual elements via square bracket notation (.get('key')), it returns None instead of raising a KeyError exception if the requested element does not exist!. Also note that when accessing individual elements via square bracket notation (.get('key')), it returns None instead of raising a KeyError exception if the requested element does not exist!. Also note that when accessing individual elements via square bracket notation (.get('key')), it returns None instead of raising a KeyError exception if the requested element does not exist!. Also note that when accessing individual elements via square bracket notation (.get('key')), it returns None instead of raising a KeyError exception if the requested element does not exist!. Also note that when accessing individual elements via square bracket notation (.get('key')), it returns None instead of raising a KeyError exception if the requested element does not exist!. Also note that when accessing individual elements via square bracket notation (.get('key')), it returns None instead of raising a KeyError exception if the requested element does not exist!. Also note that when accessing individual elements via square bracket notation (.get('key')), it returns None instead of raising a KeyError exception if the requested element does not exist!, but this only works on existing keys!! It won't add new ones!! It won't add new ones!! It won't add new ones!! It won't add new ones!! It won't add new ones!! It won't add new ones!! It won't add new ones!! It won't add new ones!!! But what about adding multiple parameters? Well...you could always do something like this...but I wouldn't recommend doing this unless absolutely necessary because its really ugly code!: Well...you could always do something like this...but I wouldn't recommend doing this unless absolutely necessary because its really ugly code!: Well...you could always do something like this...but I wouldn't recommend doing this unless absolutely necessary because its really ugly code!: Well...you could always do something like this...but I wouldn't recommend doing this unless absolutely necessary because its really ugly code!: Well...you could always do something like this...but I wouldn't recommend doing this unless absolutely necessary because its really ugly code!: Well...you could always do something like this...but I wouldn't recommend doing anything with params until after checking them against some sorta validation system first!!! That way malicious users cannot inject bad data into your system!!! That way malicious users cannot inject bad data into your system!!! That way malicious users cannot inject bad data into your system!!! That way malicious users cannot inject bad data into your system!!! That way malicious users cannot inject bad data into your system!!!!

def my_view (คำขอ):
ถ้า request.GET.get('param1'):
# ทำอะไรบางอย่างกับ param1

ถ้า request.GET.get('param2'):
# ทำอะไรบางอย่างกับ param2

...

ส่งคืนการแสดงผล (คำขอ 'my_template.html' บริบท)

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

ฉันจะสร้างตัวดำเนินการ OR ในพารามิเตอร์แบบสอบถามได้อย่างไร

ใน Django คุณสามารถใช้ตัวดำเนินการ OR เพื่อสร้างพารามิเตอร์การสืบค้น ในการทำเช่นนี้ คุณต้องสร้างวัตถุ QuerySet ก่อน จากนั้น คุณสามารถใช้อาร์กิวเมนต์คำหลัก 'หรือ' เพื่อสร้างวัตถุ QuerySet ใหม่ที่รวมเฉพาะรายการที่อยู่ในวัตถุ QuerySet แรกหรือวัตถุ QuerySet ที่สอง

กระทู้ที่เกี่ยวข้อง:

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