无法在Django中加载表单

时间:2014-01-31 23:04:13

标签: django

我需要制作一个简单的表格。我不明白为什么我没有看到它。当我按下必须显示它的按钮时,我在控制台中看到POST而不是GET请求。哪个不对。这是代码:

形式:

     class DeviceAddForm(django.forms.Form):

    name = django.forms.CharField(widget = django.forms.TextInput(attrs = {'size':'2','value':'1','class':'device',}))
    device_slug = django.forms.CharField(widget = django.forms.HiddenInput())
    model_name = django.forms.CharField(widget = django.forms.TextInput(attrs = {'size':'2','value':'1','class':'device',}))
    platfrom = django.forms.ComboField(widget = django.forms.CheckboxInput())
    sdk = django.forms.ComboField(widget = django.forms.CheckboxInput())


    def __init__(self,request=None,*args,**kwargs):
        self.request = request
        super(DeviceAddForm,self).__init__(*args,**kwargs)


    def clean(self):
        if self.request:
            if not self.request.session.test_cookie_worked():
                raise django.forms.ValidationError("Cookies must be enabled")
        return self.cleaned_data

保存数据:

    DEVICE_ID_SESSION_KEY = 'device_id'

def _device_id(request):
    if request.session.get(DEVICE_ID_SESSION_KEY,'') == '':
        request.session[DEVICE_ID_SESSION_KEY] = _generate_device_id()
    return request.session[DEVICE_ID_SESSION_KEY]

def _generate_device_id():
    device_id = ''
    chars = '0123456789'
    device_id_len = 5
    for i in range (device_id_len):
        device_id +=chars[random.randint(0,len(chars)-1)]

def get_device(request):
    return Device.objects.filter(device_id= _device_id(request))


def add_device(request):

    postdata = request.POST.copy()
    device_slug = postdata.get('device_slug','')
    name = postdata.get('name','')
    model_name = postdata.get('model_name','')
    platform = postdata.get('platform','')
    sdk = postdata.get('SDK','')
    d = get_list_or_404(Device, slug = device_slug)
    dev = Device()
 #   dev = d
    dev.name = name
    dev.model_name = model_name
    #dev.sdkID
    #dev.plID
    dev.id = _device_id(request)
    dev.save()

视图:

     @csrf_exempt
def show_device(request, template_name = "onep_web/deviceForm.html"):
    d = get_list_or_404(Device,slug = DeviceAddForm.device_slug)


    if request.method == 'POST':
        postdata = request.POST.copy()
        form = DeviceAddForm(request,postdata)
        if form.is_valid():
            device.add_device(request)  
            if request.session.test.cookie_worked():
                request.session.delete_test_cookie()
            url = urlresolvers.reverse('show_device')
            return HttpResponseRedirect(url)
    else:
        form = DeviceAddForm(request=request, label_suffix=':')
    form.field['device_slug'].widget.attr['value'] = DeviceAddForm.device_slug
    request.session.set_test_cookie()
   # return render_to_response(template_name, locals(),csrf(context_instance RequestContext(request)))
    return render_to_response(template_name, {'form':form})

网址: 网址构成应用

urlpatterns = patterns('onep_web.views',
   (r'^$','show_device',{'template_name':'onep_web/deviceForm.html'},'show_device'))

还有一些网址: 来自项目的urls.py

         from django.conf.urls import patterns, include, url
from django.contrib import admin



admin.autodiscover()




    urlpatterns = patterns('',
             # Examples:
    #url(r'^$', 'welcome_page.home', name='home'),
    #url(r'^blog/', include('blog.urls')),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^welcome_page/', 'one_web.views.welcome_page'),
    url(r'^onep_web/', include('onep_web.urls')),
    url(r'^device_page/', 'one_web.views.device_page'),
    url(r'^configuration_page/', 'one_web.views.configuration_page'),
    url(r'^log_page/', 'one_web.views.log_page'),

    )

模板:  这是我称之为表格的一个                    

<title>OnePK Web Tool - {%block page %}{% endblock %}</title>
</head>
<body>

<div >
      <br>

      <div> Welcome to OnePK web-tool</div>
    </div>
    <form >
      <br>
      <br>
      <br>Username:
      <input type="text" name="Username">
      <br>Password:
      <input type="password" name="pwd">
      <br>
      <br>
 {% block content %}     
<h4>List of devices and IP addresses:</h4>
      <table border="1">
<tr>
<td>Dev1</td>
<td>Dev2</td>
<td>Dev3</td>
<td>Dev4</td>
</tr>
<tr>
<td>{{a.getIP}}</td>
<td>{{a.getIP}}</td>
<td>{{a.getIP}}</td>
<td>{{a.getIP}}</td>
</tr>
</table> 
{% endblock %}
      <br>
      <br>




             <br>
      <button type="button" onclick="ping()">Ping elenent</button>
      <script>
        function ping()
          {


          }
      </script>
      <br>
      <br>
      <label>Connection status</label>
      <br>
      <button type="button" onclick="openDev()">Connect to element</button>
      <script>
        function openDev()
        {
        window.open("p2t.html");
        }
      </script>

    </form>

      <form method = "post" action = "." class = "device">
      {% csrf_token %}
      {{form.as_p}}
       <br />
       <input type="submit" value="Add a new network device" name="submit" alt="Add a new        network device"/>
       </form>
       <div class="cb"></div>
  </body>
</body>
</html>

deviceForm:

{ % extends "p1t.html" % }


{ %block content% }

<h1> Add a new Device </h1>


Device info: { { device_data} }

<label for="name">Name</label><input type="text" id = "name" value = ""/>
{ %endblock% }

0 个答案:

没有答案