2017-12-20 25 views
1

죄송합니다. 아직 멍청한 질문 인 경우, 아직 배우고 있습니다. 나는 다음과 같이 URL을 설정하기 위해 jinja2의 HTML 템플릿에 파이썬 코드에서 변수를 통과했다 :이 링크는 해당 ID를 가진 개체를 삭제하는 쿼리를 실행해야 누르면jinja2 템플릿에서 python으로 변수를 전달하십시오.

<a href="/delete/{{ result.key.id() }}">Delete</a>

. 그러나 링크가 눌려지면/delete/1827424298로 이동합니다. 요청 처리기가 없으므로 404 오류가 발생합니다.

동일한 ID로 엔티티를 삭제하는 메소드를 실행할 수 있도록이 ID를 파이썬 코드로 다시 전달해야합니다. 어떻게해야합니까? 중요하다면 webapp2를 사용하십시오.

class DeleteRequestHandler(webapp2.RequestHandler): 

def get(): 


    template = template_env.get_template('myrequests.html') 
    context = { 

     'results': results.key.id() 

    } 

    self.response.out.write(template.render(context)) 

편집 : 나는 내 삭제 핸들러를 추가 한 - 내가 엔티티를 삭제하는 쿼리를 추가 아직으로는 불완전하다. 지금까지의 내 생각은 jinja2 템플릿에서 results.key.id()을 가져 와서 results에 넣을 수 있지만 이것이 작동하는지 확실하지 않습니다.

+0

당신이 무엇을 요구 분명하지 않다 : 당신이 URL을 전달

ID는 처리기 메서드에 대한 첫 번째 위치 인수 될 것입니다. 당신은 그 경로를 처리하는 핸들러를 작성하지 않았기 때문에 404가 발생한다는 것을 알고 있습니다. 그래서 무엇을 쓰는 걸 멈추게할까요? –

+0

ID는 새로운 엔티티가 생성 될 때마다 클라우드 데이터 저장소에서 무작위로 생성됩니다. 그런 다음이 모든 엔티티를 검색하여 예제와 같이 삭제 링크가있는 HTML 테이블에 넣습니다. ID는 무작위이기 때문에 핸들러를 설정할 수 없습니다. ID로 엔티티를 삭제하는 방법이 필요합니다. – jb2003

+0

하지만 ID가 무작위 적이기 때문에 나는 핸들러를 설정할 수 없다는 이유를 이해하지 못합니다. 물론 당신은 할 수. –

답변

0

그래서 은 URL에 동적 부분이있는 경로 처리기를 설정하는 방법에 대해 혼동스럽게 생각합니다. webapp2 튜토리얼에서 완전히 건너 뛴 것은 유감 스러운데, 웹 애플리케이션을 작성하는 가장 기본적인 부분이기 때문입니다. 그러나, 그것은 당신이 읽어야하는 the guide to routing에서 잘 커버됩니다.

app = webapp2.WSGIApplication([ 
    ... 
    (r'/delete/(\d+)', MyDeleteHandler), 
]) 

하는 것입니다 지금 경로 당신의 삭제 핸들러 형태 /delete/<number>/의 URL : 간단한에서

, 그것은 경로에 정규식을 넣어의 문제입니다.

class MyDeleteHandler: 
    def get(self, item_id): 
     key = ndb.Key(MyModel, item_id) # or whatever 
+0

고마워요,이게 내가 겪은 것처럼 보입니다. 핸들러가 호출 된 후 URL의 ID로 어떻게 작업 할 수 있습니까? 이상 적으로 URL에서 ID를 가져 와서 삭제 핸들러의 새 변수에 넣으면 쿼리에 사용할 수 있습니다. – jb2003

+0

제 대답에 언급했는데 그것을 확장했습니다. –

+0

또한 간단한 링크에서 GET으로 파괴적인 변경, 특히 삭제를해서는 안됩니다. 양식과 POST를 사용해야합니다. –