Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/05/2013, 21:22
rinlo
 
Fecha de Ingreso: mayo-2013
Mensajes: 2
Antigüedad: 11 años
Puntos: 0
Pregunta Django no sirve la vista. Error 404

Hola es mi primera entrada en el foro, intentaré ser claro y conciso.

Estoy empezando con Django y estoy probando con un código para gestionar encuestas descargado de github: ntusurvey

Tengo problemas con algunas urls que no son servidas.

En concreto:
Código:
url(r'^edit_survey/(\w+)/$', 'survey.views.edit_survey'),
Esta vista es utilizada tanto para editar una encuesta ya creada como para crear una nueva encuesta.
def edit_survey(request, view_key=""):
Si le paso el ID de la encuesta la url responde, por ejemplo: /edit_survey/02
pero si lo que quiero es crear una nueva encuesta: /edit_survey/ me devuelve un error 404.

En un inicio la función comprueba si le pasamos la variable POST:
Código:
if request.POST:
si es así pinta los datos de la encuesta solicitada para poder ser editados con
Código:
return HttpResponse(simplejson.dumps(dict), mimetype='application/javascript')
Sino comprueba si la se le pasa alguna variable por url
Código:
try:
              if view_key != "":
                surveyID = Survey.objects.get(key=view_key).id
           except BaseException as e:
                return error_jump(request)
Sino se le pasa ninguna variable inicializa el ID para crear una nueva encuensta:
Código:
       if surveyID != 0:
        survey = Survey.objects.get(id=surveyID)
        is_collaborator = survey.is_collaborator(request.user)
        collaborators = []
        for collaborator in survey.collaboration_set.all():
            collaborators.append(str(collaborator.user.id))
        collaborators = ",".join(collaborators)
        title = survey.title
        description = survey.description
        deadline = survey.deadline
Crea el diccionario necesario para pasarle a la plantilla
Código:
dict = {'surveyID': surveyID, 'survey': survey, "title": title, "description": description, "deadline": deadline,
            'is_collaborator': is_collaborator, 'collaborators': collaborators}
    template = "edit_survey.html"
    return render_to_response(template, dict, RequestContext(request))
He omitido gran parte del código.
Por una parte me gustaría saber si he entendido el concepto y por otra saber por que la dirección localhost/edit_survey/ no pinta la pantalla para crear una nueva encuesta.

El código de la vista al completo está en el repositorio del creador por si he omitido información importante https://github.com/sfdye/ntusurvey/blob/master/survey/views.py

Un saludo y gracias por la ayuda.