我使用Django3.1.1和Python3.8.5
我有同样的问题,就像在这个include() got an unexpected keyword argument 'app_name'中,所以我使用了第一个答案的解决方案,但仍然有错误,我不知道该怎么办
这是我博客中的url.py
from django.conf.urls import url
from . import views
from .feeds import LatestPostsFeed
app_name = 'blog'
urlpatterns = [
# Widoki posta.
url(r'^$', views.post_list, name='post_list'),
#url(r'^$', views.PostListView.as_view(), name='post_list'),
url(r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/'\
r'(?P<post>[-\w]+)/$',
views.post_detail,
name='post_detail'),
url(r'^(?P<post_id>\d+)/share/$', views.post_share,
name='post_share'),
url(r'^tag/(?P<tag_slug>[-\w]+)/$', views.post_list,
name='post_list_by_tag'),
url(r'^feed/$', LatestPostsFeed(), name='post_feed'),
url(r'^search/$', views.post_search, name='post_search'),
]
这是我的URL(主)
from django.conf.urls import include, url
from django.contrib import admin
from django.contrib.sitemaps.views import sitemap
from blog.sitemaps import PostSitemap
sitemaps = {
'posts': PostSitemap,
}
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^blog/', include('blog.urls')),
url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps},
name='django.contrib.sitemaps.views.sitemap'),
]
我的观点
from django.shortcuts import render, get_object_or_404
from .models import Post, Comment
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.views.generic import ListView
from .forms import EmailPostForm, CommentForm, SearchForm
from django.core.mail import send_mail
from taggit.models import Tag
from django.db.models import Count
from haystack.query import SearchQuerySet
def post_share(request, post_id):
# Pobranie posta na podstawie jego identyfikatora.
post = get_object_or_404(Post, id=post_id, status='published')
sent = False
if request.method == 'POST':
# Formularz został wysłany.
form = EmailPostForm(request.POST)
if form.is_valid():
# Weryfikacja pól formularza zakończyła się powodzeniem…
cd = form.cleaned_data
post_url = request.build_absolute_uri(
post.get_absolute_url())
subject = '{} ({}) zachęca do przeczytania "{}"'.format(cd['name'], cd['email'], post.title)
message = 'Przeczytaj post "{}" na stronie {}\n\n Komentarz dodany przez {}: {}'.format(post.title, post_url, cd['name'], cd['comments'])
send_mail(subject, message, 'admin@myblog.com', [cd['to']])
sent = True
else:
form = EmailPostForm()
return render(request, 'blog/post/share.html', {'post': post,
'form': form,
'sent': sent})
class PostListView(ListView):
queryset = Post.published.all()
context_object_name = 'posts'
paginate_by = 3
template_name = 'blog/post/list.html'
def post_list(request, tag_slug=None):
object_list = Post.published.all()
tag = None
if tag_slug:
tag = get_object_or_404(Tag, slug=tag_slug)
object_list = object_list.filter(tags__in=[tag])
paginator = Paginator(object_list, 3) # Trzy posty na każdej stronie.
page = request.GET.get('page')
try:
posts = paginator.page(page)
except PageNotAnInteger:
# Jeżeli zmienna page nie jest liczbą całkowitą,
# wówczas pobierana jest pierwsza strona wyników.
posts = paginator.page(1)
except EmptyPage:
# Jeżeli zmienna page ma wartość większą niż numer ostatniej strony
# wyników, wtedy pobierana jest ostatnia strona wyników.
posts = paginator.page(paginator.num_pages)
return render(request,
'blog/post/list.html',
{'page': page,
'posts': posts,
'tag': tag})
def post_detail(request, year, month, day, post):
post = get_object_or_404(Post, slug=post,
status='published',
publish__year=year,
publish__month=month,
publish__day=day)
# Lista aktywnych komentarzy dla danego posta.
comments = post.comments.filter(active=True)
if request.method == 'POST':
# Komentarz został opublikowany.
comment_form = CommentForm(data=request.POST)
if comment_form.is_valid():
# Utworzenie obiektu Comment, ale jeszcze nie zapisujemy go w bazie danych.
new_comment = comment_form.save(commit=False)
# Przypisanie komentarza do bieżącego posta.
new_comment.post = post
# Zapisanie komentarza w bazie danych.
new_comment.save()
else:
comment_form = CommentForm()
# Lista podobnych postów.
post_tags_ids = post.tags.values_list('id', flat=True)
similar_posts = Post.published.filter(tags__in=post_tags_ids)\
.exclude(id=post.id)
similar_posts = similar_posts.annotate(same_tags=Count('tags'))\
.order_by('-same_tags','-publish')[:4]
return render(request,
'blog/post/detail.html',
{'post': post,
'comments': comments,
'comment_form': comment_form,
'similar_posts': similar_posts})
def post_search(request):
form = SearchForm()
if 'query' in request.GET:
form = SearchForm(request.GET)
if form.is_valid():
cd = form.cleaned_data
results = SearchQuerySet().models(Post)\
.filter(content=cd['query']).load_all()
# Obliczenie całkowitej liczby wyników.
total_results = results.count()
return render(request,
'blog/post/search.html',
{'form': form,
'cd': cd,
'results': results,
'total_results': total_results})
else:
return render(request,
'blog/post/search.html',
{'form': form})
还有我的模特
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
from django.urls import reverse
from taggit.managers import TaggableManager
class PublishedManager(models.Manager):
def get_queryset(self):
return super(PublishedManager,
self).get_queryset().filter(status='published')
class Post(models.Model):
STATUS_CHOICES = (
('draft', 'Roboczy'),
('published', 'Opublikowany'),
)
title = models.CharField(max_length=250)
slug = models.SlugField(max_length=250,
unique_for_date='publish')
author = models.ForeignKey(User,
related_name='blog_posts',on_delete=models.CASCADE)
body = models.TextField()
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() # Menedżer domyślny.
published = PublishedManager() # Menedżer niestandardowy.
# Obsługa tagów.
tags = TaggableManager()
class Meta:
ordering = ('-publish',)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('blog:post_detail',
args=[self.publish.year,
self.publish.strftime('%m'),
self.publish.strftime('%d'),
self.slug])
class Comment(models.Model):
post = models.ForeignKey(Post, related_name='comments',on_delete=models.CASCADE)
name = models.CharField(max_length=80)
email = models.EmailField()
body = models.TextField()
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
active = models.BooleanField(default=True)
class Meta:
ordering = ('created',)
def __str__(self):
return 'Komentarz dodany przez {} dla posta {}'.format(self.name, self.post)
这是我的错误
^C(myDjangoEnv) jakub@jakub-HP-ProBook-6470b:~/Pobrane/djptas/r03/mysite$ python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
Exception in thread django-main-thread:
Traceback (most recent call last):
File "/home/jakub/anaconda3/envs/myDjangoEnv/lib/python3.8/site-packages/django/template/utils.py", line 66, in __getitem__
return self._engines[alias]
KeyError: 'django'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/jakub/anaconda3/envs/myDjangoEnv/lib/python3.8/site-packages/django/template/backends/django.py", line 121, in get_package_libraries
module = import_module(entry[1])
File "/home/jakub/anaconda3/envs/myDjangoEnv/lib/python3.8/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 783, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/home/jakub/Pobrane/djptas/r03/mysite/blog/templatetags/blog_tags.py", line 8, in <module>
import markdown
ModuleNotFoundError: No module named 'markdown'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/jakub/anaconda3/envs/myDjangoEnv/lib/python3.8/threading.py", line 932, in _bootstrap_inner
self.run()
File "/home/jakub/anaconda3/envs/myDjangoEnv/lib/python3.8/threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "/home/jakub/anaconda3/envs/myDjangoEnv/lib/python3.8/site-packages/django/utils/autoreload.py", line 53, in wrapper
fn(*args, **kwargs)
File "/home/jakub/anaconda3/envs/myDjangoEnv/lib/python3.8/site-packages/django/core/management/commands/runserver.py", line 118, in inner_run
self.check(display_num_errors=True)
File "/home/jakub/anaconda3/envs/myDjangoEnv/lib/python3.8/site-packages/django/core/management/base.py", line 392, in check
all_issues = checks.run_checks(
File "/home/jakub/anaconda3/envs/myDjangoEnv/lib/python3.8/site-packages/django/core/checks/registry.py", line 70, in run_checks
new_errors = check(app_configs=app_configs, databases=databases)
File "/home/jakub/anaconda3/envs/myDjangoEnv/lib/python3.8/site-packages/django/contrib/admin/checks.py", line 78, in check_dependencies
for engine in engines.all():
File "/home/jakub/anaconda3/envs/myDjangoEnv/lib/python3.8/site-packages/django/template/utils.py", line 90, in all
return [self[alias] for alias in self]
File "/home/jakub/anaconda3/envs/myDjangoEnv/lib/python3.8/site-packages/django/template/utils.py", line 90, in <listcomp>
return [self[alias] for alias in self]
File "/home/jakub/anaconda3/envs/myDjangoEnv/lib/python3.8/site-packages/django/template/utils.py", line 81, in __getitem__
engine = engine_cls(params)
File "/home/jakub/anaconda3/envs/myDjangoEnv/lib/python3.8/site-packages/django/template/backends/django.py", line 25, in __init__
options['libraries'] = self.get_templatetag_libraries(libraries)
File "/home/jakub/anaconda3/envs/myDjangoEnv/lib/python3.8/site-packages/django/template/backends/django.py", line 43, in get_templatetag_libraries
libraries = get_installed_libraries()
File "/home/jakub/anaconda3/envs/myDjangoEnv/lib/python3.8/site-packages/django/template/backends/django.py", line 108, in get_installed_libraries
for name in get_package_libraries(pkg):
File "/home/jakub/anaconda3/envs/myDjangoEnv/lib/python3.8/site-packages/django/template/backends/django.py", line 123, in get_package_libraries
raise InvalidTemplateLibrary(
django.template.library.InvalidTemplateLibrary: Invalid template library specified. ImportError raised when trying to load 'blog.templatetags.blog_tags': No module named 'markdown'
您是否检查过是否安装了降价?如果没有
pip install Markdown
相关问题 更多 >
编程相关推荐