2017-12-28 59 views
1

이상한 질문이 있습니다. 나는 목록에 친구를 추가하는 기능을 만들고 있는데, 내보기 및 URL입니다.장고 - 버튼 URL

@login_required(login_url='user:login') 
def friend_add(request, friend): 

    friendship = FriendShip(
     from_friend=request.user, 
     to_friend=friend 
    ) 

    friendship.save() 
    return HttpResponseRedirect(request.path) 

url(r'^add_friend/$', views.friend_add, name="add_friend"), 

나는 템플릿의 URL을 호출하는 동안 :

<input type="button" class="btn btn-info" value="Add Friend" onclick="location.href='{% url 'user:add_friend' friend=post.poster %}';"> 

것이다 일이 예외 동안 로드 웹 페이지 : 키워드 인수 'add_friend' '{에 대한

역 '친구':} '찾을 수 없습니다. 1 개 패턴 (들) 시도 : '사용자/add_friend/$']

을 여러 attemptions 후 웹 페이지가 입력 제거한로드 될 수

<input type="button" class="btn btn-info" value="Add Friend" onclick="location.href='{% url 'user:add_friend'%}';"> 

(이 충분하기 때문에 이상한 I이 버튼을 클릭하면 뷰 그러나) 입력

을 요구하고, 다른 예외 상황이 발생 하나 필요한 위치 인자 누락

friend_add을() : '친구'

나는이 질문에 대해 정말로 혼란스러워한다. 어떤 도움을 주셔서 감사합니다!

url(r'^add_friend/(?P<friend>[0-9]+)/$', views.friend_add, name="add_friend"), 

이것은이 add_friend/12 같은 URL로 친구 객체의 정수 ID를 통과 할 수 있습니다 :

답변

4

: path(..)이 Django- 2.0에서 사용할 수 있습니다.

path(r'add_friend/<int:friend>/', views.friend_add, name="add_friend"),
:

url(r'^add_friend/$', views.friend_add, name="add_friend"), # no parameter 

당신은 인스턴스에 대한 path(..)를 지정하여 친구에 대한 기본 키 (pk)를 사용할 수 있습니다 :

문제는 여기에 friend URL에 하지 때문이다

으로 작업하는 경우 url(..)과 정규식을 사용할 수 있습니다.

url(r'^add_friend/(?P<friend>[0-9]+)/$', views.friend_add, name="add_friend"),

그리고 지금 우리는 역 URL에 친구의 기본 키를 사용할 수 있습니다 (쉽게 읽을 수 있도록 멀티 라인)

<input 
    type="button" 
    class="btn btn-info" 
    value="Add Friend" 
    onclick="location.href='{% url 'user:add_friend' friend=post.poster.pk %}';" 
>

합니다.

+2

참고 :'path'는 django 2.0에서만 사용 가능합니다. 장고 버전 2.0에서는 대신'url'을 사용하십시오. –

+0

@ABDULNIYASPM 정말 고맙습니다! 나는 '경로'에 대해 물어 보려고했다. –

+0

맞아, 나는 그 URL에 그것을 놓치고있다. 도와 주셔서 감사합니다! –

2

귀하의 URLPATTERN는이 같은 친구 인수를 가지고 말아야.

+1

아, 그 부분이 누락되었습니다. 도움에 감사드립니다! –