58👍
First, check if the request.GET
dict contains a parameter named q
. You’re doing this properly already:
if request.method == 'GET' and 'q' in request.GET:
Next, check if the value of q
is either None
or the empty string. To do that, you can write this:
q = request.GET['q']
if q is not None and q != '':
# Do processing here
Notice that it is not necessary to write request.GET.get('q', None)
. We’ve already checked to make sure there is a 'q'
key inside the request.GET
dict, so we can grab the value directly. The only time you should use the get
method is if you’re not sure a dict has a certain key and want to avoid raising a KeyError exception.
However, there is an even better solution based on the following facts:
- The value
None
evaluates toFalse
- The empty string
''
also evaluates toFalse
- Any non-empty string evaluates to
True
.
So now you can write:
q = request.GET['q']
if q:
# Do processing here
See these other resources for more details:
2👍
Thanks for the clarification by @Ned.
Found a complete explanation here.
Basically:
‘==’ can be thought of as “value equality”, that is, if two things look
the same, == should return a true value. (For those with a Java
background, Python’s == is actually doing something akin to an equals()
method.)‘is’ can be thought of as ‘object
identity’, that is, if the two things
actually are the same object.
- [Django]-How to use MySQLdb with Python and Django in OSX 10.6?
- [Django]-Django connection to postgres by docker-compose
- [Django]-Raw SQL queries in Django views