2016-09-16 21 views
0

我試圖得到一個模型信息,但無需移動網址PK,讓我自己,當我訪問解釋,例如:Django的獲得同樣的網頁信息,而不顯示在URL

/列表 它顯示的信息,如果我只是在那裏點擊我可以訪問該用戶的完整信息,或預訂或東西和URL更改爲詳細信息/ 8/

有沒有任何方法來獲取信息沒有在url中顯示數據庫的ID?

例如列表/

我有一些代碼,但我D無有任何想法如何做到這一點,我希望你們能幫助我。

網址:

url(r'^detalle/(?P<pk>[0-9]+)/$', views.detalle_id, name="detalle_id"), 
url(r'^detalle/(?P<nombre>.*)/$', views.detalle_nombre), 

觀點:

def detalle_id(request, pk): 
    detalle = Pregunta.objects.get(pk=pk) 
    Pregunta.objects.filter(id=pk).update(comentario='1') 

    return render(request, 'detalle.html', {'detalle': detalle}) 


def detalle_nombre(request, nombre): 
    detalle = Pregunta.objects.get(nombre=nombre) 
    return render(request, 'detalle.html', {'detalle': detalle}) 

def lista(request): 
    listadb = Pregunta.objects.all() 
    return render(request, 'lista.html', {'listadb':listadb}) 

編輯:從評論:

這樣做的原因是因爲我試圖做一個客戶數據庫和將使用數據庫的用戶將可以訪問其中的一些數據庫,但不能訪問所有數據庫,因此,如果用戶設置了例如domain.com/89,則會看到該信息或者可以編輯89號客戶端,我有很多原因讓我試圖這樣做。相信我,我需要獲得有關點擊的信息,但只需點擊即可訪問而不用更改網址。可能嗎 ?你有什麼想法

+0

您可以使用slu instead代替ids – arcegk

+0

感謝您回答arcegk,問題是我需要一個乾淨的網址,有沒有什麼辦法可以在不改變網址的情況下查看點擊圖書信息? –

+0

爲什麼你不想使用統一資源標識符?沒有電話號碼的電話網絡有什麼好處? – allcaps

回答

2

如果你試圖爲數據庫中的每本書或其他項目創建一個'unguessable'url來阻止未經授權的訪問,那麼你就錯了。不可猜測的網址可以被猜出,而不應該看到或編輯它們的人將會編輯它們。

至少你應該檢查用戶是否被認證。

if request.user.is_authenticated(): 

但是這隻會告訴你用戶是否登錄或匿名用戶。要確定用戶是否有權編輯,您需要向模型添加一些信息。

class Pregunta(models.Model): 
    .... 
    owner = models.ForiegnKey(User) 

然後做一個額外的測試,以找出是否所有權是正確的。

又回到了難以猜測的網址,如果你不希望使用蛞蝓,你可以使用非順序主鍵:https://stackoverflow.com/a/37605582/267540

這是有用的,如果你不想透露給用戶多少做項目存在於您的數據庫中,哪個項目最先出現。