2013-06-05 5 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 

Так что «имя» будет захваченное значение в URL, а затем было бы найти «IP», используя захваченное значение. Конечно, если есть лучший способ сделать это, пожалуйста, дайте мне знать.

+0

Как являются модели, и представление, которое вы создали определенный? и что вы подразумеваете под «данными в модели в сочетании с»? – karthikr

ответ

0

Похоже, что вы хотите что-то делать по строкам страницы, на которой отображается информация для сервера, включая IP (предположительно, если вы можете это сделать, вы можете использовать ip, чтобы делать то, что вы НАСТОЯТЕЛЬНО хотите сделать) ,

Подобный ответ питер, вы бы иметь URL, который выглядит как

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_kwarg или pk_url_kwarg.

Смежные вопросы