我目前无法在Django中登录我的管理员,我得到了404页面。
Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/admin
No Blog entry found matching the query
更新#3
上次更新: 12月17日上午10点
状态:尚未解决,可以使用一些帮助
可疑
此代码段与" startproject takehome"
相关urls.py
from django.conf.urls import patterns, include, url
from django.contrib import admin
urlpatterns = patterns(
'',
url(r'^admin/', include(admin.site.urls)),
url(r'^markdown/', include("django_markdown.urls")),
url(r'^', include('blog.urls')),
)
settings.py
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
'django_markdown',
)
这三个代码段与名为" Blog"
的应用程序相关Urls.py
from django.conf.urls import patterns, url
from . import views
urlpatterns = patterns(
'',
url(r'^$', views.BlogIndex.as_view(), name="list"),
url(r'^(?P<slug>\S+)$', views.BlogDetail.as_view(), name="detailed"),
)
Models.py
from django.db import models
from django.core.urlresolvers import reverse
# Create your models here.
class FullArticleQuerySet(models.QuerySet):
def published(self):
return self.filter(publish=True)
class FullArticle(models.Model):
title = models.CharField(max_length=150)
author = models.CharField(max_length=150)
slug = models.SlugField(max_length=200, unique=True)
pubDate = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
category = models.CharField(max_length=150)
heroImage = models.CharField(max_length=250, blank=True)
relatedImage = models.CharField(max_length=250, blank=True)
body = models.TextField()
publish = models.BooleanField(default=True)
gameRank = models.CharField(max_length=150, blank=True, null=True)
objects = FullArticleQuerySet.as_manager()
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse("FullArticle_detailed", kwargs={"slug": self.slug})
# def random(self):
# return self.get_queryset().order_by('?').values('title','author','heroImage','body').first()
class Meta:
verbose_name = "Blog entry"
verbose_name_plural = "Blog Entries"
ordering = ["-pubDate"]
views.py
from django.views import generic
from . import models
# Create your views here.
class BlogIndex(generic.ListView):
queryset = models.FullArticle.objects.published()
template_name = "list.html"
# paginate_by = 2
class BlogDetail(generic.DetailView):
model = models.FullArticle
template_name = "detailed.html"
# random = models.FullArticle.objects.order_by('?').values('title','author','heroImage','body').first()
答案 0 :(得分:1)
由于迁移,您的架构肯定存在问题。你可以尝试一些事情。
编辑:由于我在当前的models.py中没有看到字段order
,因此最好选择1。
选项1 :刷新并重新同步数据库。 (或者更好的是,删除数据库并重新同步 - 如果使用SQLite3则很容易)。在blog/
目录中找到db.sqlite3并将其删除。 警告:如果这样做,您将丢失所有数据。完成后,运行./manage.py syncdb,不要担心迁移(特别是在运行Django 1.7时)。
选项2 :删除导致错误的字段(如果可能),运行迁移,然后将其重新添加并重新运行迁移。
选项3 :查找所有订单并删除两个不唯一的订单,然后重新运行迁移。
答案 1 :(得分:1)
更新:确定迁移问题已被移除。
更新2:确定所以它缺少管理网址模式
您在主urls.py中导入博客网址的情况如何?您将通过模式r'^ admin /'和r'^ markdown /'作为博客条目的所有内容进行匹配。 现在你的请求是“/ admin”,并且由于最后缺少“/”(斜杠),而不是与第一个模式匹配,它与最后一个匹配:r'^(?P \ S +)$”。因此,现在它查找带有名为“admin”的slug的博客条目,并且未能找到一个,因此返回404具有非常明确的描述。 (下次不要犹豫,在问题中加入:)
我还希望请求“/ admin /”将导致管理页面,因为它会与r'^ admin /'匹配,因为尾随/
更好的做法是避免主网址和应用程序特定网址之间发生冲突,方法是将您的博客文章略微添加到网址:
url(r'^blog/', include('blog.urls', namespace="blog")),
https://docs.djangoproject.com/en/dev/intro/tutorial03/#namespacing-url-names
: 也许您尝试在其中包含非唯一值后使订单字段唯一。您是否尝试删除整个数据库并重建它?这将是我的第一个建议。
似乎sqlite中存在一些怪癖,我基本上从不使用它。我建议也尝试使用像postgresql或mysql这样更成熟的东西。