Django1.5에서보기와 양식을 작성했습니다. POST 요청이 성공하면 (설정 한 일부 값에 따라) 동시에 생성되는 다른 URL로 리디렉션 할 페이지가 필요합니다.
그렇지 않고 POST가 성공하지 못한 경우 동일한 페이지에 머물러야합니다. 지금은 다음과 같이 문제를 해결했지만 이것이 최선의 방법은 아니라고 확신합니다.
이것은 내 견해의 일부입니다.
def layer_create(request, template='layers/layer_create.html'):
if request.method == 'GET':
....
elif request.method == 'POST':
out = {}
...
new_table = 'something that comes from the form'
if form.is_valid():
...
try:
...
out['success'] = True
except:
...
out['success'] = False
finally:
if out['success']:
status_code = 200
# THIS IS THE PART WHICH I THINK I CAN IMPROVE
template = '/something/workspace:' + new_table + '/metadata'
else: # if form not valid
out['success'] = False
return render_to_response(template, RequestContext(request, {'form': form}))
코드의이 부분 :
template = '/something/workspace:' + new_table + '/metadata'
나에게 매우 못생긴 것 같습니다. 하지만 제가 장고를 처음 접했기 때문에이 문제에 어떻게 접근해야할지 모르겠습니다.
결국 다음과 같이 "revers"방법을 사용했습니다.
layer = 'geonode:' + new_table
return HttpResponseRedirect(
reverse(
'layer_metadata',
args=(
layer,
)))
내 urls.py 파일에는 다음이 포함됩니다.
url(r'^(?P<layername>[^/]*)/metadata$', 'layer_metadata', name="layer_metadata"),
여기에 설명 된대로 이것이 가장 적절한 방법입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다