Django просмотр не передавая данные IP-адреса из формы - PullRequest
0 голосов
/ 05 марта 2020

Попытка сделать что-то простое здесь, где я передаю IP-адрес из формы в другое представление. Раньше у меня были успехи после начинающих уроков. Если бы кто-то мог указать мне на то, что мне не хватает, это было бы огромной помощью.

модель:

class GenericIP(models.Model):
    name = models.CharField(max_length=50)
    genericip = models.GenericIPAddressField()

    def __str__(self):
        return self.name 

форма:

class IpForm(forms.Form):
    gateway = ModelChoiceField(queryset=GenericIP.objects.order_by('name').values_list('genericip', flat=True).distinct())

просмотров:

def TestCreate(request):
    if request.method == 'GET':
        form1 = IpForm()
        return render(request, 'create_test.html', {'form1' : form1} )
    else:
        if request.method == 'POST':
            form1 = IpForm()
            if form1.is_valid():
                genericip = form1.cleaned_data
                genericip.save()
            return render(request, 'create_test.html', {'genericip' : genericip} )

def RunTest(request, genericip=""):
    if request.method == 'POST':
        Server = genericip
    return HttpResponse(Server)

URL:

urlpatterns = [
    path('', views.TestCreate, name='create_test'),
    path('run_test', views.RunTest, name='run_test',),
    ]

шаблон:

{% block content %}
<form action="{% url 'run_test' %}"method='post'>
    {% csrf_token %}
    {{ form1 }}
    <input type='submit' class="btn btn-success" value='Run Test'>
</form>
{% endblock %}

Итак, когда я нажимаю кнопку для запуска теста, я ничего не получаю для httpresponse. Данные публикации для представления TestCreate показывают переменную «genericip» и ввод «192.168.100.100», но эти данные неправильно публикуются в представлении выполнения.

Ответы [ 2 ]

2 голосов
/ 05 марта 2020

В функции RunTest вы получаете значение genericip в качестве аргумента функции. Но в вашем сценарии вы отправляете переменную genericip в виде формы отправки . Поэтому вы должны попробовать что-то вроде этого,

def RunTest(request):
    if request.method == 'POST':
        ip = request.POST.get('gateway') # Some thing with form field name
        Server = ip
    return HttpResponse(Server)

Надеюсь, это поможет вам, если что-нибудь, пожалуйста, дайте мне знать.

2 голосов
/ 05 марта 2020

Вы не добавляете данные POST в экземпляр формы в запросе post - вы просто создаете экземпляр пустого IpForm экземпляра.

Попробуйте что-то подобное в соответствующем разделе вашего кода:

if request.method == 'POST':
    form1 = IpForm(data=request.POST)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...