2014-06-21 4 views
0

내가 장고 튜토리얼을 읽고 있어요 및 튜토리얼에서 urls.py이 있습니다 :Django/HTML - POST 요청을 보내는 유일한 방법입니까?

(r'^vote/$', bookmark_vote_page), 

와 'SharedBookmark'라는 모델이 :

class SharedBookmark(models.Model): 
    bookmark = models.ForeignKey(Bookmark, unique=True) 
    votes = models.IntegerField(default=1) 
    users_voted = models.ManyToManyField(User) 

하지만 템플릿에 ,

:

{% if shared_bookmarks %} 
    <ul class="bookmarks"> 
    {% for shared_bookmark in shared_bookmarks %} 
     <li> 
      <a href="/vote/?id={{ shared_bookmark.id }}" class="vote">[+]</a> 

링크를 처리하는보기는 이것이다 :에/투표를 유도하는 링크가 /이있다

@login_required 
def bookmark_vote_page(request): 
    if request.GET.has_key('id'): #if it is a GET request 
     try: 
      id = request.GET['id'] 
      shared_bookmark = SharedBookmark.objects.get(id=id) #if the bookmark is found 
      shared_bookmark.votes += 1 #make a change to the 'votes' field in the DB 
      shared_bookmark.users_voted.add(request.user) #make a change in the 'users_voted' field in the DB 
      shared_bookmark.save() 

위에서 볼 수 있듯이 템플릿은 '? id = x'(여기서 x는 숫자)를 URL의 끝에 추가하고 뷰는 GET 요청을 사용하여 데이터베이스를 변경합니다. 내가 읽은 것으로부터, 나는 데이터베이스를 수정하고 싶을 때만 POST 요청을 사용해야한다. 저에게 GET 요청 대신 POST 요청을 보내는 방법이 있습니까? 전체 HTML 양식/제출 버튼을 만들지 않고 있습니까?

답변

0

맞습니다. 서버의 데이터를 변경하려는 경우 게시물 요청을 사용해야합니다.

그냥 html을 사용하는 경우 양식 및 제출 버튼을 만들어야합니다. 자바 스크립트를 사용하는 경우 클릭 핸들러를 링크에 추가하면 양식을 제출할 수 있습니다. Ui

관련 문제