Абсолютно.Если ваш URL сопоставлен с функцией, в данном случае foobar.views.hello
, то эта функция может выглядеть следующим образом для запроса GET:
def hello(request):
if request.method == "GET":
name_detail = request.GET.get("name", None)
if name_detail:
# got details
else:
# error handling if required.
Данные в закодированных формах, т.е. параметры POST, доступны, если выHTTP POST от request.POST
.
Вы также можете создать их самостоятельно, если хотите, скажем, параметры запроса для запроса POST.Просто сделайте это:
PARAMS = dict()
raw_qs = request.META.get('QUERY_STRING', '') # this will be the raw query string
if raw_qs:
for line in raw_qs.split("&"):
key,arg = line.split("=")
PARAMS[key] = arg
И аналогично для параметров, закодированных в форме в не POST-запросах, сделайте следующее:
FORM_PARAMS = QueryDict(request.raw_post_data)
Однако, если вы пытаетесь использовать формы с Django,вам обязательно стоит взглянуть на django.forms .Вся библиотека форм просто сделает вашу жизнь проще;Я никогда не писал html-форму вручную, используя Django, потому что эта часть Django берет на себя всю работу.Для краткого изложения вы сделаете следующее:
forms.py :
class FooForm(forms.Form):
name = fields.CharField(max_length=200)
# other properties
или даже это:
class FooForm(forms.ModelForm):
class Meta:
model = model_name
Тогда в вашемзапрос, вы можете передать форму в шаблон:
def pagewithforminit(request):
myform = FooForm()
return render_to_response('sometemplate.html', {'nameintemplate': myform},
context_instance=RequestContext(request))
и в представлении, которое получает его:
def pagepostingto(request):
myform = FooForm(request.POST)
if myform.is_valid(): # check the fields for you:
# do something with results. if a model form, this:
myform.save()
# creates a model for you.
См. также модель формы .Короче говоря, я настоятельно рекомендую django.forms.