をもとにリダイレクト:ジャンゴ - 正しく、私は二つの問題を抱えているカテゴリ
EDIT:
は、私はいくつかの微調整を行い、部分的に問題を解決しました。しかし、今、私は新しいブログの投稿フォームを提出すると、それは間違ったURLに私を連れて行くと私は何をしようとすると、私は完全な投稿を見つけることができません。私が完全なポストへのリンクをクリックすると、タイプエラー "オブジェクト"ポスト "iterableではありません"が表示されます。カテゴリ "progresstracker"は完全に動作し、 "blogtopics/.."は機能しません。はここに最新のコードです:
views.py
def pt_detail(request, slug, category):
post = get_object_or_404(Post, slug=slug, category__slug=category)
template = CATEGORY_TEMPLATES.get(post.category.slug)
return render(request, template, {'post': post})
def bt_detail(request, slug, category):
post = get_object_or_404(Post, slug=slug, category__slug=category)
template = CATEGORY_TEMPLATES.get(post.category.slug)
return render(request, template, {'post': post})
def post_new(request):
if request.method == "POST":
form = PostForm(request.POST)
if form.is_valid():
post = form.save(commit=False)
post.author = request.user
post.published_date = timezone.now()
post.save()
if post.category.slug == 'blog-topics':
return redirect('bt_detail', slug=post.slug, category=post.category)
else:
return redirect('pt_detail', slug=post.slug, category=post.category)
else:
form = PostForm()
return render(request, 'blog/post_edit.html', {'form': form})
def post_edit(request, slug, category):
post = get_object_or_404(Post, slug=slug, category__slug=category)
if request.method == "POST":
form = PostForm(request.POST, instance=post)
if form.is_valid():
post = form.save(commit=False)
post.author = request.user
post.published_date = timezone.now()
post.save()
if post.category.slug == 'blog-topics':
return redirect('bt_detail', slug=post.slug, category=post.category)
else:
return redirect('pt_detail', slug=post.slug, category=post.category)
else:
form = PostForm(instance=post)
return render(request, 'blog/post_edit.html', {'form': form})
urls.py
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^home/$', views.home, name='home'),
url(r'^blogtopics/computer-science/$', views.compsci, name='computer-science'),
url(r'^blogtopics/data-science/$', views.datasci, name='data-science'),
url(r'^blogtopics/other/$', views.other, name='other'),
url(r'^blogtopics/$', views.blogtopics, name='blogtopics'),
url(r'^resources/$', views.resources, name='resources'),
url(r'^new/$', views.post_new, name='post_new'),
url(r'^progresstracker/$', views.progresstracker, name='progresstracker'),
url(r'^blogtopics/(?P<category>[\w-]+)/(?P<slug>[\w-]+)/$', views.bt_detail, name='bt_detail'),
url(r'^blogtopics/(?P<category>[\w-]+)/(?P<slug>[\w-]+)/edit/$', views.post_edit, name='post_edit'),
url(r'^(?P<category>[\w-]+)/(?P<slug>[\w-]+)/$', views.pt_detail, name='pt_detail'),
url(r'^(?P<category>[\w-]+)/(?P<slug>[\w-]+)/edit/$', views.post_edit, name='post_edit'),
]
computerscience.html
{% extends 'blog/base.html' %}
{% block nav %}
<li><a href="/home">Home</a></li>
<li><a href="/progresstracker">Progress Tracker</a></li>
<li class="dropdown">
<a class="active" href="/blogtopics" class="dropbtn">Blog Topics</a>
<div class="dropdown-content">
<a href="/blogtopics/computer-science">Computer Science</a>
<a href="/blogtopics/data-science">Data Science</a>
<a href="/blogtopics/other">Other</a>
</div>
</li>
<li><a href="/resources">Resources</a></li>
{% endblock %}
{% block content %}
<div id="content">
<div class="padding">
<p style="padding-top: 50px">
<div class="post_list">
{% for post in post %}
<h3><a href="{{ post.get_absolute_url_bt }}">{{ post.title }}</a></h3>
<p>{{ post.published_date }}</p>
{% endfor %}
</div>
</div>
</div>
{% endblock %}
models.py
class Post(models.Model):
title = models.CharField(max_length=100, unique=True)
slug = models.SlugField(max_length=100, unique=True)
body = models.TextField()
posted = models.DateField(db_index=True, auto_now_add=True)
category = models.ForeignKey('books.Category', related_name='%(class)s_slug')
created_date = models.DateTimeField(
default = timezone.now)
published_date = models.DateTimeField(
blank=True, null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def __unicode__(self):
return '%s' % self.title
def get_absolute_url(self):
return "/%s/%s/" % (self.category, self.slug)
def get_absolute_url_bt(self):
return "/blogtopics/%s/%s/" % (self.category, self.slug)
ありがとうございました!私はいくつかの調整(元の編集を参照)を行い、問題の半分を修正しましたが、まだ苦労しています。助けをお待ちしています。 – Andrew