2013-06-05 69 views
0

我是Django的新手,所以這可能看起來很明顯,但我一直無法找出這一個。我有一個需要IP地址來執行各種操作的視圖。當我在這樣的觀點手動指定IP地址,它工作正常:Django - 變數在視圖

node = '127.0.0.1' 

我有存儲在模型中的IP地址,所以我的問題是我會怎樣使用設置在視圖中的「節點」變量來自模型的數據以及來自url的捕獲值?

編輯 - 這裏是目前的模型,讓我知道它是否應該以不同的方式完成。

class Server(models.Model): 
    name = models.CharField(max_length=30) 
    ip = models.IPAddressField('IP Address') 

    def __unicode__(self): 
      return self.name 

因此,「名稱」將被捕獲的值在網址中,然後它會找到「IP」使用捕獲的值。當然,如果有更好的方法來做到這一點,請讓我知道。

+0

如何是模型的URL,並且您已經創建定義的視圖?以及'模型中的數據與'結合'是什麼意思? – karthikr

回答

0

這聽起來像你想沿着一個顯示服務器信息的頁面的行來做一些事情,包括IP(假設你可以做到這一點,你可以使用ip做任何你實際想做的事情) 。

彼得的回答一樣,你必須看起來像

url(r'^server_info/(?P<server_name>\w+)/$', 'server_info_view', name='server_info'), 

的視圖

from django.shortcuts import get_object_or_404 

def server_info_view(request, server_name): 
    server = get_object_or_404(Server, name=server_name) 
    node = server.ip 
    # Keep in mind, at this point 'node' is a django.models.IPAddressField object, you might need 
    node = str(node) 
    # Which should get you an IP in the format you have above, though I'm not sure. 
+0

非常感謝,這很有效,而且正是我所需要的。 – user1617987

0

在URL中加入某種標識符(我通常只使用模型的PK),獲取對象,並根據需要做任何事情。

事情是這樣的:

在urls.py:

... 
url(r'^item_detail/(?P<item_id>\d+)/$', 'my_viewname', name='my_item_detail'), 
... 

對於視圖:

from django.shortcuts import get_object_or_404 

def my_viewname(request, item_id): 
    my_item = get_object_or_404(MyModel, pk=int(item_id)) 
    node = my_item.node 
    ... 

如果您正在使用基於類的通用視圖,DetailView或任何繼承自SingleObjectMixin可以使用slug_url_kwargpk_url_kwarg設置進行此操作。