2009-10-26 4 views
2

나는이 입력과 양식을 가지고 : 나는 제출할 때장고와 HTML 배열

<input name="person[name]" value=""> 
<input name="person[surname]" value=""> 
<input name="person[age]" value=""> 

, 난 변수가 HTML 배열을 할당하는 방법을, request.POST.getlist의 원인을 ('사람') '아무튼 t 작업, 내가 다른 게시물에 대한 확인되었다하지만 난 누군가의 원인, 내가 그것을 알아내는 데 도움 수있는 희망

THEAD

유용한 아무것도하지 않고있는 단 하나는 해당 문서를 읽고, 아주 거지 그것을 할 길 ...


것은 그래서 내가 그것을

discounts = Discount.objects.all() 

{% for i in discounts %} 
<input name="discount[{{ i.id }}]" value="{{ i.default_value }}"> 
{% endfor %} 

내에서

내가 어떤 방법을 해달라고했다 ... 나는 모든 할인은 기본 값이 할인과 내 DB ...에서 테이블을 가지고있다 그 html 배열을 잡으려고 내가 어떤 제안을 보내고 있니?

+0

이 양식에 운영 다소 직관적 인 방법입니다 폼 PHP를 오는 :

def get_post_dict(post, key): result = {} if post: import re patt = re.compile('^([a-zA-Z_]\w+)\[([a-zA-Z_\-][\w\-]*)\]$') for post_name, value in post.items(): value = post[post_name] match = patt.match(post_name) if not match or not value: continue name = match.group(1) if name == key: k = match.group(2) result.update({k:value}) return result 

지금이처럼 사용할 수 있습니다 : 그래서, 여기 내 솔루션입니다 배열. 이런 종류의 자동 파싱의 단점을 실제로 보지 마십시오. django가 request를 허용하는 것을 쉽게 볼 수 있습니다 .POST.get ('person', {}). ('성', '') – Mikhail

+0

동일한 이름을 가진 여러 입력의 경우 request.POST.getlist (...) – Mikhail

답변

1

이 작업을 수행하는 데 매우 비범 한 방법이 아닌 것 같습니다. 또는 심지어 그것을 수행하는 장고식 방법.

http://docs.djangoproject.com/en/dev/topics/forms/

은 정말 아직 장고와 형태의 물건을 많이하지 않은,하지만

1

당신이 정의하는 경우가 자동 생성, 검증 등의 측면에서 도움이 될 것 같은이 보이는 당신의 템플릿에서 이런 식으로 양식을 만들면 직접 사전에 매핑 할 수 없습니다.

에만

request.POST['person[name]'] 

그러나 개별 값을 받아야합니다,이 장고에 양식을 사용하는 방법입니다. 당신은 장고 선언적 구문 (docs)를 형성 따라 오히려 이러한 필드를 정의하고, 같은 태그를 사용하여 템플릿 렌더링을 처리 장고하도록해야 :

{{form.as_p}} 
{{form.as_table}} 

이 방법을 사용하면 폼 클래스에 save 방법을 정의 할 수 있습니다 "배열 매핑"기능을 수행하십시오. 이 모델을 정의 된 모델에 매핑하려면 해당 값이 저장되고 양식을 ModelForm으로 확장해야합니다.

+0

을 사용할 수 있습니다. 것은 내가 할인과 내 DB에있는 테이블을 가지고 ... 모든 할인은 기본값을 가지고 ... 는 그래서 및 내보기 {할인 %로하여 i %} 그것을 했다 그 html 배열을 잡아낼 수있는 방법이 없다 ... 나는 어떤 제안을 보내고 있는가? –

+0

모델 양식 또는 양식을 작성하고 초기 사전을 적절하게 전달해야합니다. 위에서 언급 한 문서가 도움이 될 수 있습니다. 구체적으로 도움이 필요하면 별도의 질문을하거나이 질문을 업데이트하십시오. –

4

같은 오래된 질문에 답변 해 주셔서 죄송합니다.하지만 같은 문제가 발생하여 답변을 찾지 못했습니다.

persons = get_post_dict(request.POST, 'person') 
... 

또는

django.http.QueryDict.getdict = get_post_dict 
persons = request.POST.getdict('person') 
+0

Django가 그런 유용한 것을 구현하지 않았습니까? – Mahdi