Xin chào, tôi đang tham gia django và điều này khiến tôi đau đầu. Tôi đang cố gắng để có được một biến GET đơn giản. URL là site.com/search/?q=search-termCách kiểm tra nếu request.GET var là None?
Quan điểm của tôi là: truy vấn
def search(request):
if request.method == 'GET' and 'q' in request.GET:
q = request.GET.get('q', None)
if q is not None:
results = Task.objects.filter(
Q(title__contains=q)
|
Q(description__contains=q),
)
...return...
else:
...
else:
...
tìm kiếm như: mysite.com/search/? (không q) vượt qua đầu tiên nếu đúng.
Sự cố trong các truy vấn như mysite.com/search/?q=. Họ không bị bắt bởi nếu q không phải là Không:
Vì vậy, câu trả lời ngắn gọn là Làm cách nào tôi có thể kiểm tra q == ''? (Tôi đã thử '', Không, v.v., không có kết quả.)
** ** nếu q ** thay vì ** nếu q không phải là None (hoặc '') **. Bất cứ ai có một lời giải thích cho điều này? – Nacho
Nói chung, bạn cần phải rất thận trọng về việc sử dụng toán tử 'is' trong Python. Bình thường, bạn muốn kiểm tra bình đẳng ('=='), không phải là kiểm tra nhận dạng ('is'). Một chuỗi các bài kiểm tra độ dài khác 0, 'True'. –