2012-09-14 4 views
1

새 게시물을 만들 페이지가 있습니다. 링크 (ahref)를 추가하여 그 순간에 게시물을 미리보고 싶습니다. 나는 하나의 양식과 DB에 게시물을 저장하는 버튼을 제출했습니다. 미리보기에는 동일한 양식을 사용해야합니다. '미리보기'링크를 클릭하면 페이지가 'preview.html'로 리디렉션되어 형식 값을 표시 할 수 있습니다.django - 미리보기를 만드는 방법

내가 걸렸습니다. 나는 내 마음 속에서 이것을위한 알고리즘을 만들 수 없다. 거기에 한 page.one 양식입니다. 하나의보기 (addPost). 다른 서식 파일이있는 다른보기에서이 양식의 값에 도달해야합니다.

그리고 나는 'titlepreview'및 'bodyPreview'라고하는 py라는 두 개의 필드를 가지고 있습니다. 미리보기 페이지에서 양식의 값을 볼 수 있습니다. 양식 데이터는이 두 필드에 기록되어야합니다. 여기

가 models.py : 여기

class Post(models.Model): 
    owner = models.ForeignKey(User) 
    title = models.CharField(max_length = 100) 
    body = models.TextField() 
    bodyPreview = models.TextField() #preview 
    titlePreview = models.CharField(max_length=100) # preview 
    slug = AutoSlugField(populate_from='title',unique=True) 
    posted = models.DateField(auto_now_add=True) 
    isdraft = models.BooleanField(default=False) 

내 add_post보기입니다 :

@login_required(login_url='/login/') 
def add_post(request): 
    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'] 
      owner = request.user 
      n = Post(title = titleform, body = bodyform, isdraft=checkform, owner=owner) 
      n.save() 
      return HttpResponseRedirect('/admin/') 

    else: 
     form=addForm() 
     return render(request,'add.html',{'form':form,}) 
    return render_to_response('add.html',{'form':form,},context_instance=RequestContext(request)) 

내 addForm 양식 :

class addForm(forms.Form): 
    title = forms.CharField(max_length=100,widget=forms.TextInput(attrs={'placeholder':'Buraya Başlık Gelecek',})) 
    body = forms.CharField(widget=forms.Textarea(attrs={'placeholder':'Buraya Metin Gelecek','rows':'25','cols':'90',})) 
    isdraft = forms.BooleanField(required=False) 
    #ispreview = forms.BooleanField(required=False) i just added this line as first step. :) 

다른 코드가 필요한 경우; 당신은

당신에게

+0

업데이트 소식입니다. 추가 된 models.py – alix

+0

이 제대로 저장되고 있습니까? 그렇다면 간단히 사용자를 preview.html로 리디렉션하고 db에서 데이터를 표시하십시오. – wasimbhalli

+0

미리보기 링크를 클릭하면; jquery (페이지 새로 고침 없음)를 사용하여이 두 미리보기 필드 (titlepreview 및 bodypreview)에 데이터를 저장 한 다음 preview.html – alix

답변

0

감사합니다 아래에 addFormmodelForm로 변환 언급하고 (다른 제출 버튼이 '_save'이름 확인) 이름이 '_preview'와 add.html 템플릿에 제출 버튼을 추가 할 수 있습니다 .

class addForm(forms.ModelForm): 
    class Meta: 
     model = Post 

@login_required(login_url='/login/') 
def add_post(request): 
    post = None 
    template_name = 'add.html' 
    if request.method == 'POST': 
     form = addForm(request.POST) 
     if form.is_valid(): 
      if '_preview' in request.POST: 
       # don't save the post 
       post = form.save(commit=False) 
       template_name = 'preview.html' 
      elif '_save' in request.POST: 
       # save the post 
       post = form.save() 
       return HttpResponseRedirect('/admin/') 
    else: 
     form = addForm() 
    return render_to_response(template_name, {'form': form, 'post': post}, context_instance=RequestContext(request)) 

하단에 이런 일 것이다 당신의 템플릿 : : 이런 식으로함으로써

<input type='submit' name='_save' value='Save Post' /> 
<input type='submit' name='_preview' value='Preview Post' /> 

, 당신이 그것을 저장하지 않고 사용자가 미리에게 자신의 게시물을 할 수있는 코드는 다음과 같을 것 preview.html에 양식을 포함시키고 저장 버튼을 포함하여보고 싶은 것을 좋아하면 게시물을 저장할 수 있도록하십시오.

+0

으로 리디렉션하여 아무 작업도 수행하지 않아야합니다. 오류 없음. 나는 당신이 말한 코드를 작성합니다. 저장하지 않고 미리 보지 않습니다. :/ – alix

+0

와우 -'POST' 블록에서'form ='줄을 놓쳤습니다. 다시 시도하십시오. – girasquid

+0

오, 물어 보는 걸 깜빡 했군. 나는 URL을 설정하는 것을 잊어 버린다. 나는 그것이 아무것도하지 않는다고 생각한다. 아직도. – alix

관련 문제