1ページ[管理ページ]には2つのリンクがあります。両方とも同じフォームページ[投稿の追加]に移動します。管理ページで; [新しい投稿]リンクをクリックするか、同じページに接続されているテキストボックスにタイトルを入力することができます[投稿の追加]。そのページで; チェックボックスフィールドがあるフォームがあります。
isdraft = forms.BooleanField(required=False,initial=True)
ご覧のように ; フィールドのデフォルト値をTrueに設定しました。管理ページで「新しい投稿」をクリックした場合; そのフォームページに来る; それは素晴らしい働きをします。チェックボックスはTrueとして表示されます。しかし、他の方法を使用すると、[テキストボックスにタイトルを入力する]チェックボックスがFalseとして表示されます。私はそれを理解できませんでした。
編集:質問は複雑だと思います。明確ではありません。追加のデータが必要な場合; 追加できます。
編集:
admin.html:
<h1>Posts<a href="{% url add_post %}" class="button">New Post</a></h1> #this works!
<form action="{% url add_post %}" method="POST">{% csrf_token %}
{{ form.title }} <!-- this is textbox -->
{{ form.isdraft.as_hidden }} <!-- when i add this line form works correctly. but i get 'please fill all fields' warning when redirected to add_post page. -->
</form>
edit2:add_postビュー:
@login_required(login_url='/login/')
def add_post(request):
template_name = 'add.html'
owner = request.user
if request.method == "POST":
form = addForm(request.POST)
if form.is_valid():
titleform = form.cleaned_data['title']
bodyform = form.cleaned_data['body']
checkform = form.cleaned_data['isdraft']
n = Post(title=titleform, body=bodyform, isdraft=checkform, owner=owner)
n.save()
messages.add_message(request, messages.SUCCESS,
'New post created successfully!')
return HttpResponseRedirect('/admin/post/add/')
else:
messages.add_message(request, messages.WARNING,
'Please fill in all fields!')
else:
form = addForm()
return render_to_response(template_name, {'form': form, 'owner':owner,},context_instance=RequestContext(request))`
管理者ビュー:
@login_required(login_url='/login/')
def admin_view(request):
if request.session.get('loggedin') == "djangoo":
form = newDraft() # textbox in admin page
return render_to_response('admin.html', {'form':form },context_instance=RequestContext(request))
else:
return HttpResponseRedirect('/login/')
addForm:
class addForm(forms.Form):
title = forms.CharField(max_length=100,
widget=forms.TextInput(attrs={'placeholder':'Title here',}))
body = forms.CharField(widget=forms.Textarea(
attrs={'placeholder':'Write post here','rows':'25','cols':'90',}))
isdraft = forms.BooleanField(required=False,initial=True)