python - Django视图不从表单传递IP地址数据
问题描述
在这里尝试做一些简单的事情,将 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)
网址:
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”,但该数据未正确发布到运行测试视图。
解决方案
在RunTest函数中,您将 genericip 值作为函数参数获取。但在您的场景中,您以 submit 表单的形式发送 genericip 值。所以你应该尝试这样的事情,
def RunTest(request):
if request.method == 'POST':
ip = request.POST.get('gateway') # Some thing with form field name
Server = ip
return HttpResponse(Server)
希望这对你有帮助,如果有什么请告诉我。
推荐阅读
- eclipse - Eclipse Neon - 项目不适用于 Weblogic
- scala - 带有小数类型的 spark DataFrame 中的大负十进制值正在四舍五入
- angular - “可观察”类型上不存在属性“地图”
[]>' - r - 使用 data.table,是否可以通过重复组中的第一个 X 值来创建新列
- go - Zap logger 源代码行
- python - 将 IBM Watson 助手与 Python 中的回归模型相关联?
- javascript - Express:如何正确使用路由参数
- firebase - Cloud Functions 中使用的 Firestore where 子句中是否有“!=”运算符?
- internationalization - 如何在 Sphinx 或 gettext 中翻译 po 文件的完整文章
- c# - 将 UI5 与 ASP.Net oData 后端一起使用