0
사용자가 자신의 게시물에 태그를 달 수 있기를 원합니다. 따라서 그는 텍스트 필드에 단어를 입력하고이를 ","로 구분합니다. 그가 끝나면 그는 저장을 누르고 그가 입력 한 모든 태그는 그 게시물에 저장됩니다. django-taggit을 사용하고 있지만 사용자가 필드에 단어를 입력하면 게시물과 함께 저장되지 않습니다. 하지만 장고 관리 사이트에서 그렇게하면 완벽하게 작동합니다. 여기 보기 파일에서 django-taggit을 사용하는 방법
내 코드입니다 :models.py :
class Post(models.Model):
STATUS_CHOICES = (
('draft', 'Draft'),
('published', 'Published'),
)
title = models.CharField(max_length=250)
slug = models.SlugField(max_length=250,
unique_for_date='publish')
author = models.ForeignKey(settings.AUTH_USER_MODEL,
related_name='blog_posts')
body = RichTextUploadingField()
publish = models.DateTimeField(default=timezone.now)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
status = models.CharField(max_length=10,
choices=STATUS_CHOICES,
default='draft')
objects = models.Manager() # The default manager
published = PublishedManager() # Our custom manager
tags = TaggableManager()
category = models.ForeignKey(BlogCategory, related_name='post_category')
header_photo = models.ImageField(upload_to = 'users/%Y/%m/%d',
null = True,
blank = True,
width_field="width_field",
height_field="height_field"
)
width_field = models.IntegerField(default = 0, null = True)
height_field = models.IntegerField(default=0, null = True)
forms.py :
class CreatePostForm(forms.ModelForm):
class Meta:
model = Post
fields = ('title', 'status', 'header_photo', 'body', 'tags')
views.py :
@login_required(login_url='account_login')
def create_post(request):
if request.method == 'POST':
post_form = CreatePostForm(data=request.POST, files=request.FILES)
if post_form.is_valid():
new_post = post_form.save(commit=False)
new_post.author = request.user
profile = Profile.objects.get(profile_user=request.user)
new_post.category = profile.type_of_blogger
new_post.slug = slugify(new_post.title)
new_post.save()
messages.success(request, 'Post created successfully', extra_tags='post_saved')
# redirect to new created item detail view
return redirect(new_post.get_absolute_url())
else:
post_form = CreatePostForm()
context = {'post_form': post_form}
return render(request,
'blog/post/create_post.html',
context)
urls.py :
HTML에서 91,363,210urlpatterns = [
# post views
url(r'^$', views.post_list, name='post_list'),
url(r'^create/$', views.create_post, name='create_post'),
url(r'^detail/(?P<id>\d+)/(?P<slug>[-\w]+)/$', views.post_detail, name='post_detail'),
]
내 양식 :
<form class="form-horizontal text-center" method="post" action="." enctype="multipart/form-data">
{% csrf_token %}
{{ post_form.media }}
<fieldset>
<div class="container text-center" style="margin-bottom: 20px">
<h2 style="color: #c1b4b4;">Upload the header picture for your post</h2>
{% render_field post_form.header_photo style="background-color: #E8E8E8" %}
</div>
<div class="form-inline text-center">
<div class="form-group" style="margin-bottom: 20px;">
{% render_field post_form.title class="form-control" placeholder="Blog title" %}
{% render_field post_form.status class="form-control" %}
<p>Tag your post, so users can easy find it.</p>
{% render_field post_form.tags class="form-control" %}
</div>
</div>
{% render_field post_form.body class="form-control" %}
<hr>
<div class="control-group">
<!-- Button -->
<div class="controls" style="margin-bottom: 20px">
<button class="btn btn-lg btn-success" style="min-width: 300px">Save</button>
</div>
</div>
{% if redirect_field_value %}
<input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" />
{% endif %}
</fieldset>
</form>
당신의 도움에 감사드립니다.
흠 당신을 감사합니다, 지금 당장 그것을 시도 할 수는 없지만 최대한 빨리처럼 나는 당신의 대답을 받아 들일 것입니다. – P3P5