【问题标题】:Newbie Doubts, need some help, please新手疑惑,求大神帮忙
【发布时间】:2012-10-12 19:38:07
【问题描述】:

一直在寻找这个答案……在 Django 中完全是新人,但疯狂地阅读它,虽然还不够……

我想建立一个简单的数据输入系统。 CharField 采用文件名,我在选择框中显示文件中的行,允许删除行。其余的在提交时保存。

model.py

​​>
class Inputmodel(models.Model):
    data = models.CharField(max_length=128)

views.py

​​>
from forms import InputForm 
from proj.models import Inputmodel


def ipdb_input_add(request):
    if request.method == 'GET':
       form = InputForm(request.GET)
       if form.is_valid():
           dlist = []
           if 'filename' in request.GET and request.GET['filename']:
               filename = request.GET['filename']
               listp = open(filename, 'r').read 
               with open(filename, 'rt') as f:
                   myfile = File(f) 
                   for line in myfile: 
                       dlist.append(line) 
               myfile.close

           for d in dlist:
               item = Inputmodel(data=d)
               item.save 

           return render_to_response('base.html', { 'form': form }) 

forms.py

​​>
from django import forms
from ip_db.models import Inputmodel

class InputForm(forms.Form):
    filename = forms.CharField(max_length=128)
    box      = forms.MultipleChoiceField(
                   required=False, 
                   choices=Inputmodel.objects.all().values_list('id', 'ipaddr'),
                   widget=forms.SelectMultiple(attrs={
                       'style':'width:200px;height:300px;'
                   }       
               ))     

这不是一项艰巨的任务,我担心我错过了一种更简单的方法。有什么建议吗?

非常感谢

【问题讨论】:

  • 你应该把这个问题发到CodeReview.Stackexchange.com
  • 你把这个问题发到那里了吗?请给我发个链接
  • 不要忘记在方法/函数等调用中添加“()”。这一点很重要 :)。并查看 python 'with' 语句文档。

标签: django-models django-forms django-views django-1.4


【解决方案1】:

可能有帮助的几点:

  1. 仅当用户使用“GET”时才呈现表单。这样,当您打开网址时,您什么也看不到。
  2. 您应该使用 forms.cleaned_data 来获取表单的值。检查here
  3. 如果用户尝试上传文件(我不太明白),我会在表单中使用docfile = forms.FileField(label='Select a file:', help_text='')
  4. 然后要获取文件,您可以在视图中使用data_raw=request.FILES['docfile'].read()
  5. 最后,一个更简单的实现可能是创建用于选择文件的第一个表单。提交后,我将使用文件的行初始化第二个表单。用于初始化表单检查here 第二次提交将保存数据。

【讨论】:

    猜你喜欢
    • 2010-12-27
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 2020-11-02
    • 2014-12-15
    • 2017-02-16
    • 2013-09-06
    • 1970-01-01
    相关资源
    最近更新 更多