2017-09-05 88 views
0

好吧,我正在爲一個網站製作一個朋友系統,它會很好。當我手動輸入正確的URL時,我可以創建兩個用戶(友誼)之間的關係。但是這就是問題所在,我需要手動輸入,這是我的urls.py:嘗試添加Django的朋友時檢索用戶的ID

url(r'^profile_test/connect/(?P<operation>.+)/(?P<pk>\d+)/$', views.change_friends, name='change_friends') 

這裏的views.py:

def change_friends(request, operation, pk): 
    #this view will manage a user's friends 
    other_user = User.objects.get(pk=pk) 

    if operation == 'add': 
     Friend.objects.add_friend(
      request.user, other_user, message='Hi, I would like to add you') 

    elif operation == 'remove': 
     Friend.objects.remove_friend(request.user, other_user) 


    return HttpResponse(Friend.objects.friends(request.user)) 

正如你所看到的視圖需要的參數operationpk ,該操作將添加或刪除朋友,並且pk將是您想添加爲朋友的用戶的主鍵。

我想找到一種方法來動態生成正在添加的用戶的ID,所以我可以把它放在一個URL中。所以這個HTML代碼需要做的,但我不知道如何:

<a href='http://localhost:8000/profile_test/connect/add/dynamically-generated-pk/'> Click </a>

我應該如何去了解呢?我使用的是django-friendship包BTW

回答

1

當你render你的HTML,你會想傳遞一個列表中,您希望能夠保存爲網頁上的鏈接的動態生成-PK的pk_list。我不知道,您希望可把你的鏈接,用戶,但如果它的所有用戶,你可以這樣做:

views.py

pk_list = [obj.pk for obj in User.objects.all()] #TBD: remove the current user 
render(request, 'example.html', {'pk_list': pk_list}) 

example.html的

{% for pk in pk_list %} 
    <a href='http://localhost:8000/profile_test/connect/add/{{pk}}'> Click </a> 
{% endfor %} 
+0

非常感謝,我會在我回家時試試這個。我正要確認如何製作列表,然後對其進行編輯。你是一個心靈讀者 – Amon

+1

@Amon我沒有測試過,所以讓我知道如果你遇到任何問題! – TheoretiCAL

+0

會做感謝的人 – Amon