Webサーバーでiniファイルを編集したいのですが、djangoを使用することにし、数日間使用しています。これを達成する方法がわかりません。私は次のようなiniファイル構造を持っています:
{'GROUP', {PROPERTY : VALUE}}
この種のiniファイルを読んだときの例:
[LOG]
FilePath = C:/Log
[CMD]
Level = 5
データ構造は次のように入力されます。
{'LOG', {'FilePath' : 'C:/Log',},
{'CMD', {'Level', '5'}}}
ループは次のようになります。
for group in settingsDict:
print group # group
for property in settingsDict[group]:
print property , # property
print settingsDict[group][property] # value
私はiniファイルパーサーを使用しています。
djangoで正しく開発する方法を理解するのに問題があります:views.py
djangoとテンプレートのある種のコントローラーはビューであり、モデルは私のiniファイル(おそらくdjangoモデルを使用してdbにリンクされています)ですか、それとも何か問題がありますか?
この辞書をテンプレートに渡し、その中にforループを作成し、次のようなhtmlタグを作成することに問題はありません<input type="text" name={{ property }} value={{ value }} maxlength="100" />
。しかし、編集したすべての値を制御に戻してファイル(またはdb)に保存するにはどうすればよいですか?3つの値すべて、つまり。が必要になりますGROUP, PROPERTY and VALUE
。
次に、djangoにもhtmlウィジェットがあることを発見しました。このウィジェットを作成しviews.py
て、テンプレートに渡します。しかし、コントローラークラスでウィジェットを作成しているので、理解しなくなったのはここです。
すべてのdjangoウィジェットのリストを作成して、テンプレートに渡しますか?同じ質問が発生します。すべてのウィジェット値をコントローラー(views.py)に戻すにはどうすればよいですか?
アップデート(11.6.2012):私のコードは次のようになります:views.py
class DynForm(forms.Form):
def setFields(self, kwds):
keys = kwds.keys()
keys.sort()
for k in keys:
self.fields[k] = kwds[k]
def settings(request):
global Settings #my ini dict
kwargs = {}
for group in Settings:
for property in Settings[group]:
kwargs[property] = forms.CharField(label = property, initial = Settings[group][property])
f = DynForm()
f.setFields(kwargs)
return render_to_response('/settings.html',
{
'textWidget' : f,
})
@csrf_exempt
def save(request):
if request.method == 'POST': # If the form has been submitted...
form = DynForm(request.POST) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
# process form data
# and return response
settings.html
<form action="/save/" method="post">
{% csrf_token %}
{% for field in textWidget %}
<div class="fieldWrapper">
{{ field.errors }}
{{ field.label }}: {{ field }}
</div>
{% endfor %}
<p><input type="submit" value="Save" /></p>
</form>
問題は、DynForm(request.POST)
nullを返すため、フィールド値を取得できないことです。私のrequest.POSTは正しく、すべてのフィールドと値が含まれています。私の知る限り、request.POSTデータを「手作業で」解析することは想定されていません。