在 Django Admin 后台发布文章

2017-04-1166742 阅读125 评论

在此之前我们完成了 Django 博客首页视图的编写,我们希望首页展示发布的博客文章列表,但是它却抱怨:暂时还没有发布的文章!如它所言,我们确实还没有发布任何文章,本节我们将使用 Django 自带的 Admin 后台来发布我们的博客文章。

创建 Admin 后台管理员账户

要想进入Django Admin 后台,首先需要创建一个超级管理员账户。我们在 让 Django 完成翻译:迁移数据库 中已经创建了一个后台账户,但如果你没有按照前面的步骤创建账户的话,可以运行 python manage.py createsuperuser 命令新建一个:

python manage.py createsuperuser

Username (leave blank to use 'zmrenwu@163.com'):  admin
Email address:  admin@example.com
Warning: Password input may be echoed.
Password:  ******
Warning: Password input may be echoed.
Password (again):  ******
Superuser created successfully.

注意:在命令行输入密码时可能不会显示输入的字符,不要以为键盘坏了,照正常的方式输入密码即可。

在 Admin 后台注册模型

要在后台注册我们自己创建的几个模型,这样 Django Admin 才能知道它们的存在,注册非常简单,只需要在 blog\admin.py 中加入下面的代码:

blog/admin.py

from django.contrib import admin
from .models import Post, Category, Tag

admin.site.register(Post)
admin.site.register(Category)
admin.site.register(Tag)

激活虚拟环境,运行开发服务器,访问 http://127.0.0.1:8000/admin/ ,就进入了到了Django Admin 后台登录页面,输入刚才创建的管理员账户密码就可以登录到后台了。

Django Admin 后台

可以看到我们刚才注册的三个模型了,点击 Posts 后面的增加按钮,将进入添加 Post 的页面,也就是新增博客文章。然后在相关的地方输入一些测试用的内容,增加完后点击保存,这样文章就添加完毕了,你也可以多添加几篇看看效果。注意每篇文章必须有一个分类,在添加文章时你可以选择已有分类。如果数据库中还没有分类,在选择分类时点击 Category 后面的 + 按钮新增一个分类即可。

Django Admin 后台新增文章

你可能想往文章内容中添加图片,但目前来说还做不到。在支持 Markdown 语法部分中将介绍如何在文章中插入图片的方法。

访问 http://127.0.0.1:8000/ 首页,你就可以看到你添加的文章列表了,下面是我所在环境的效果图:

博客首页显示的文章列表

定制 Admin 后台

在 admin post 列表页面,我们只看到了文章的标题,但是我们希望它显示更加详细的信息,这需要我们来定制 Admin 了,在 admin.py 添加如下代码:

blog/admin.py

from django.contrib import admin
from .models import Post, Category, Tag

class PostAdmin(admin.ModelAdmin):
    list_display = ['title', 'created_time', 'modified_time', 'category', 'author']

# 把新增的 PostAdmin 也注册进来
admin.site.register(Post, PostAdmin)
admin.site.register(Category)
admin.site.register(Tag)

由于如何定制 Admin 后台不是本教程的重点,这里只是为了简单地到达期望效果,因此不再对上述代码做过多解释。

刷新 Admin Post 列表页面,可以看到显示的效果好多了。

定制后的 Admin 文章列表页

总结

本章节的代码位于:Step7: publish posts using django admin

如果遇到问题,请通过下面的方式寻求帮助。

-- EOF --

125 评论
登录后回复
suzhi82
2019-09-11 08:24:12

分类只有添加按钮,怎么将删除按钮也加上呢?

回复
追梦人物 suzhi82
2019-09-11 10:09:00

删除可在分类列表页面,顶部有一个删除操作,选择要删除的分类,然后选择删除操作即可。

回复
xiepeng0234
2019-07-24 19:45:10

心态崩了,博主或哪位大神可以告诉我一下这是什么情况,,,点击文章进不去

page not found



Page not found (404)
Request Method:GET
Request URL:http://127.0.0.1:8000/single.html

Using the URLconf defined in blogproject.urls, Django tried these URL patterns, in this order:
1.^admin/
2.[name='index']

The current path, single.html, didn't match any of these.
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.
回复
xiepeng0234 xiepeng0234
2019-07-24 19:46:08

万分感谢(*^__^*) ……

回复
xiepeng0234 xiepeng0234
2019-07-24 20:27:00

对不起,我操之过急,,,后面有讲

回复
xiepeng0234
2019-07-19 16:01:32

还是不太明白

回复
EloneWangPy
2019-03-07 17:00:12

大神,在后台发布文章后,主页还是显示原有内容,看了index.html的标签,展示的确实还是原有的4个文章,是需要对index文件中的标签进行修改吗?看您好像没有对该文件做修改,还是我错过了什么……

还有感谢您的分享!

回复
EloneWangPy EloneWangPy
2019-03-07 17:17:55

果然是我错过了。。哈哈

回复
liutongyang
2018-08-16 19:51:22

【python2】

由于python2的默认编码不是UTF-8

所以需要在models中加入以下4行代码 否则不能输入中文 会引发UnicodeEncodeError 

import sys 

from imp import reload 

reload(sys) 

sys.setdefaultencoding('utf-8')

回复
zgGitHub
2018-08-10 10:33:54

 Tags:   

Tag object (1)    

Tag object (2)    

Tag object (3)    

Tag object (4)    

Tag object (5)   


发布文章的时候,选择tags,这里面显示的都是这样的。。。,这个该怎么处理呀

回复
風与飄颻
2018-07-12 21:39:52

大神, 我的主页一直显示没有文章, 但是我是确定有发布文章的。而且显示没有找到那个CSS 的文件。麻烦请教一下,我要怎么去检查。我对了一遍的,没有发现哪里有出入的。感谢。 

Image
回复
風与飄颻 風与飄颻
2018-07-12 21:52:05

晕 我不能发布问题  一发布就是空白页面

回复
風与飄颻 風与飄颻
2018-07-12 21:54:17

[van@oc6344180105 blogproject]$ python manage.py runserver Performing system checks... System check identified no issues (0 silenced).July 12, 2018 - 20:50:33 Django version 1.11.14, using settings 'blogproject.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.[12/Jul/2018 20:50:44] "GET / HTTP/1.1" 200 8444 Not Found: /css/bootstrap.min.css [12/Jul/2018 20:50:44] "GET /css/bootstrap.min.css HTTP/1.1" 404 2160[12/Jul/2018 20:50:44] "GET /static/blog/css/bootstrap.min.css HTTP/1.1" 304 0 [12/Jul/2018 20:50:44] "GET /static/blog/css/pace.css HTTP/1.1" 304 0 [12/Jul/2018 20:50:44] "GET /static/blog/css/custom.css HTTP/1.1" 304 0 [12/Jul/2018 20:50:44] "GET /static/blog/js/jquery-2.1.3.min.js HTTP/1.1" 304 0[12/Jul/2018 20:50:44] "GET /static/blog/js/bootstrap.min.js HTTP/1.1" 304 0 [12/Jul/2018 20:50:44] "GET /static/blog/js/pace.min.js HTTP/1.1" 304 0[12/Jul/2018 20:50:44] "GET /static/blog/js/modernizr.custom.js HTTP/1.1" 304 0 [12/Jul/2018 20:50:44] "GET /static/blog/js/script.js HTTP/1.1" 304 0 Not Found: /favicon.ico [12/Jul/2018 20:50:58] "GET /favicon.ico HTTP/1.1" 404 2130 Not Found: /favicon.ico [12/Jul/2018 20:50:58] "GET /favicon.ico HTTP/1.1" 404 2130

回复
風与飄颻 風与飄颻
2018-07-12 21:54:42
[van@oc6344180105 blogproject]$ python manage.py runserver 
Performing system checks... 
System check identified no issues (0 silenced).July 12, 2018 - 20:50:33 
Django version 1.11.14, using settings 'blogproject.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
[12/Jul/2018 20:50:44] "GET / HTTP/1.1" 200 8444 Not Found: /css/bootstrap.min.css 
[12/Jul/2018 20:50:44] "GET /css/bootstrap.min.css HTTP/1.1" 404 2160
[12/Jul/2018 20:50:44] "GET /static/blog/css/bootstrap.min.css HTTP/1.1" 304 0 
[12/Jul/2018 20:50:44] "GET /static/blog/css/pace.css HTTP/1.1" 304 0 
[12/Jul/2018 20:50:44] "GET /static/blog/css/custom.css HTTP/1.1" 304 0 
[12/Jul/2018 20:50:44] "GET /static/blog/js/jquery-2.1.3.min.js HTTP/1.1" 304 0
[12/Jul/2018 20:50:44] "GET /static/blog/js/bootstrap.min.js HTTP/1.1" 304 0 
[12/Jul/2018 20:50:44] "GET /static/blog/js/pace.min.js HTTP/1.1" 304 0
[12/Jul/2018 20:50:44] "GET /static/blog/js/modernizr.custom.js HTTP/1.1" 304 0 
[12/Jul/2018 20:50:44] "GET /static/blog/js/script.js HTTP/1.1" 304 0 Not Found: /favicon.ico 
[12/Jul/2018 20:50:58] "GET /favicon.ico HTTP/1.1" 404 2130 Not Found: /favicon.ico 
[12/Jul/2018 20:50:58] "GET /favicon.ico HTTP/1.1" 404 2130 
回复
風与飄颻 風与飄颻
2018-07-12 21:55:04
2
(blogproject_env) [van@oc6344180105 css]$ pwd 
/home/van/blogproject_env/blogproject/blog/static/blog/css 
(blogproject_env) [van@oc6344180105 css]$ ll 
total 140 
-rw-r--r--. 1 van van 117150 Jul 11 08:42 bootstrap.min.css 
-rw-r--r--. 1 van van  14568 Jul 11 08:42 custom.css 
drwx------. 2 van van   4096 Jul 11 08:42 highlights 
-rw-r--r--. 1 van van    177 Jul 11 08:42 pace.css

3
(blogproject_env) [van@oc6344180105 blog]$ pwd
/home/van/blogproject_env/blogproject/template/blog 
(blogproject_env) [van@oc6344180105 blog]$ ll 
total 28 
-rw-r--r--. 1 van van  9925 Jul 11 09:53 index.html 
-rw-rw-r--. 1 van van 14541 Jul 11 08:50 index_kp.html 
(blogproject_env) [van@oc6344180105 blog]$ vi index.html 
回复
風与飄颻 風与飄颻
2018-07-12 21:55:29

4{% load staticfiles %} <!DOCTYPE html><html><head>     <title> The first Blog in 2018 </title>     <!-- meta -->    <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1">     <!-- css -->    <link rel="stylesheet" href="css/bootstrap.min.css">     <link rel="stylesheet" href="http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">    <link rel="stylesheet" href="{% static 'blog/css/bootstrap.min.css' %}">     <link rel="stylesheet" href="{% static 'blog/css/pace.css' %}">     <link rel="stylesheet" href="{% static 'blog/css/custom.css' %}">     <!-- js -->     <script src="{% static 'blog/js/jquery-2.1.3.min.js' %}"></script>    <script src="{% static 'blog/js/bootstrap.min.js' %}"></script>     <script src="{% static 'blog/js/pace.min.js' %}"></script>     <script src="{% static 'blog/js/modernizr.custom.js' %}">

回复
風与飄颻 風与飄颻
2018-07-12 21:56:00
4
{% load staticfiles %} <!DOCTYPE html><html><head>     
<title> The first Blog in 2018 </title>     <!-- meta -->    
 <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1">     
<!-- css -->    
<link rel="stylesheet" href="css/bootstrap.min.css">     
<link rel="stylesheet" href="http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">    
<link rel="stylesheet" href="{% static 'blog/css/bootstrap.min.css' %}">     
<link rel="stylesheet" href="{% static 'blog/css/pace.css' %}">     
<link rel="stylesheet" href="{% static 'blog/css/custom.css' %}">     
<!-- js -->     
<script src="{% static 'blog/js/jquery-2.1.3.min.js' %}"></script>    
<script src="{% static 'blog/js/bootstrap.min.js' %}"></script>     
<script src="{% static 'blog/js/pace.min.js' %}"></script>     
<script src="{% static 'blog/js/modernizr.custom.js' %}">
回复
風与飄颻 風与飄颻
2018-07-12 21:56:49

抱歉 不知道为什么发不了, 发的好乱

回复
追梦人物 風与飄颻
2018-07-16 16:24:45

可能是你视图中的模板变量和模板中的变量名不统一,仔细对比一下。

回复
風与飄颻 追梦人物
2018-07-22 15:06:54


感谢大神!

回复
xiepeng0234 追梦人物
2019-07-24 19:56:22

博主,遇到了这个问题,望博主不吝赐教(*^__^*)  万分感谢伟大的博主O(∩_∩)O

Page not found (404) 

Request Method:GETRequest URL:http://127.0.0.1:8000/single.html 

Using the URLconf defined in blogproject.urls, Django tried these URL patterns, in this order: 

^admin/

 [name='index']

The current path, single.html, didn't match any of these.

 You're seeing this error because you have DEBUG = True in your Django settings file.

 Change that to False, and Django will display a standard 404 page.

回复
xiepeng0234 xiepeng0234
2019-07-24 20:28:02

对不起,,,,我操之过急了,,,后面有讲。。。。。

回复
lianxi
2018-06-27 20:45:07

1231 

回复
Wynnfan
2018-06-16 13:50:28

博主你好,我在admin后台写的文章分类和标签都是汉字,保存了以后,显示category object ,tag object,是怎么回事

回复
sheaye Wynnfan
2018-07-11 22:33:04

在Category类和Tag类中定义__str__方法,返回name,例如:

class Category(models.Model): 

name = models.CharField(max_length=100)

def __str__(self): return self.name

回复
安天崖
2018-06-13 16:16:28

你好博主,新人有个问题帮忙解答下,前面没有错误,但在后台注册模型那里,我在admin.py里加入了如上代码,但正常进入admin页面后看不到那些模型,这个怎么解释0.0

回复
安天崖 安天崖
2018-06-13 16:17:43

并且本来显示的用户和组里,点击添加,一直在加载中,并不能添加

回复
azunia
2018-05-16 10:34:04

博主能不能补下前台发布文章的教程呢?

MODELS:

class Post(models.Model): 

 title = models.CharField(max_length=70, verbose_name='题目') 

 body = models.TextField(verbose_name='正文') 

 created_time = models.DateTimeField(auto_now_add=True) 

 modified_time = models.DateTimeField(auto_now_add=True) 

 excerpt = models.CharField(max_length=200, blank=True) 

 category = models.ForeignKey(Category, on_delete=models.CASCADE, verbose_name='分类') 

 tags = models.ManyToManyField(Tag, blank=True, verbose_name='标签') 

 author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) 

 views = models.PositiveIntegerField(default=0)

...

VIEWS:

def ask(request): 

 if request.method == 'POST': 

 form = AskForm(request.POST, instance=request.user)

 if form.is_valid(): 

 form.save() 

 return redirect('/in')

...

FORMS:

class AskForm(forms.ModelForm): 

 class Meta: model = Post 

 fields = ['title', 'category', 'tags', 'body']


我写的前台view,获取当前登陆用户,然后保存文章到数据库

但是现在提交不报错,也跳转了,但是就是存不到数据库里。。

回复
追梦人物 azunia
2018-05-16 12:24:17

可以在调试环境下看看 form.save() 是否的确执行了。

回复
azunia 追梦人物
2018-05-16 14:31:02

我测试改了一下:

VIEWS:

if request.method == 'POST': 

 form = AskForm(request.POST)

 if form.is_valid():

 form.save() 

 return redirect('/in')

去掉了request.user

然后

FORMS:

class AskForm(forms.ModelForm): 

 class Meta: model = Post 

 fields = ['title', 'author', 'category', 'tags', 'body']

加上了author

页面渲染出了所有用户的下拉列表。。但是这样提交之后,就能插入数据库了。。

我怎么能只能选当前用户,或者不显示,默认就是当前用户呢。。

愁人。。。。

回复
追梦人物 azunia
2018-05-23 12:20:01

哦,如果你用 model form,需要复写表单的 save 方法,手动将 user 保存,需要一定的技巧,最好是读一读表单的源码。

回复
xiaopanddxiong
2018-04-10 16:39:46

初学者的福利

回复
JonhoyChan
2018-03-05 15:34:09

博主你好,我觉得在设计数据库的时候,创建时间和修改时间可以用DateTimeField里的参数,比如:

created_time = models.DateTimeField(auto_now_add=True)

modified_time = models.DateTimeField(auto_now=True)

这样效果是不是会更好呢

回复
追梦人物 JonhoyChan
2018-04-16 11:50:06

注意这两个字段已经 deprecated,用 default 参数指定一个函数更好。

回复
量飞
2018-01-05 10:11:24
回复
JJSang 量飞
2018-04-24 11:20:58

不会用这个库 没有查到方法 方便教我一下吗

回复
Arno Fan
2017-12-28 14:32:28

python2.x   post提交报这个错误,有同学遇到吗?  tag, category没有问题。

IntegrityError at /admin/blog/post/add/
(1452, 'Cannot add or update a child row: a foreign key constraint fails (`mysite`.`django_admin_log`, CONSTRAINT `django_admin_log_content_type_id_c4bce8eb_fk_django_co` FOREIGN KEY (`content_type_id`) REFERENCES `django_content_type` (`id`))')
回复
Arno Fan Arno Fan
2017-12-28 14:44:26

感觉自己踩到一个坑。 

./manage.py sqlmigrate admin 0001
BEGIN;
--
-- Create model LogEntry
--
CREATE TABLE `django_admin_log` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `action_time` datetime(6) NOT NULL, `object_id` longtext NULL, `object_repr` varchar(200) NOT NULL, `action_flag` smallint UNSIGNED NOT NULL, `change_message` longtext NOT NULL, `content_type_id` integer NULL, `user_id` integer NOT NULL);
ALTER TABLE `django_admin_log` ADD CONSTRAINT `django_admin_log_content_type_id_c4bce8eb_fk_django_co` FOREIGN KEY (`content_type_id`) REFERENCES `django_content_type` (`id`);
ALTER TABLE `django_admin_log` ADD CONSTRAINT `django_admin_log_user_id_c564eba6_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`);
COMMIT;

回复
Arno Fan Arno Fan
2017-12-28 15:03:39

注:直接起了一个 python 3.6.4 的虚拟环境,提交没有问题。

回复
wgPython
2017-12-12 19:35:54

博主,问一下,比如我先建立好了Models模型类,同时也迁移插入好了数据,然后我想加几个字段,比如点击量,阅读量,评论数,还有是否删除等等这些,一直没有找到合适的方法,我就直接修改的数据库,sql语句手动添加的字段,请问django怎么新添加字段。


回复
追梦人物 wgPython
2017-12-17 12:04:54

在定义的 Model 类添加属性,然后运行那两条数据库迁移命令就可以了。

回复
叶小凯凯
2017-11-30 22:53:15

回复
Tove_cv
2017-10-07 21:25:46
# 本人新手一枚,如有错误请见谅。
# 今天我照着教程操作了一遍,结果在后台  ( http://127.0.0.1:8000/admin/ ) 添加了文章后,
# 然后回到主页面 (127.0.0.1:8000) ,发现主页面没有显示 Post 的 body (博客正文),
# 然后就发现在上一节的 index.html 里的代码里发现少了一行显示 body (博客正文)的代码:
# <p>{{ post.body }}</p>
# 我把它添加在 
/templates/blog/index.html
<!-- 我觉得是少了一句: <p>{{ post.body }}</p> -->
<div class="entry-content clearfix">
  <p>{{ post.body }}</p>    
  <p>{{ post.excerpt }}</p>    
  <div class="read-more cl-effect-14">        
    <a href="#" class="more-link">继续阅读 <span class="meta-nav">→</span></a>    
  </div>
</div>

回复
Kenmin_Young Tove_cv
2018-02-27 09:15:40

主页上显示的是标题、分类、时间、摘要等一些文章基本信息,不显示body的内容,body要‘继续阅读’后才能看到

回复
阿潘尼
2017-10-01 17:01:18

找到原因了,在上个章节第一步修改blog/views.py,这一步忘记做了,修改后就正常了

回复
阿潘尼
2017-10-01 16:53:18

按步骤输入了几个测试数据进post,刷新index时总显示“暂时还没有发布的文章!”,不知道哪个步骤错了?

回复
mamami
2017-09-11 10:27:24

找到原因了,PostAdmin没有注册

回复
mamami
2017-09-11 10:23:35

我都设置了,但是没有显示,不知道错哪了

回复
heidanchaofanhei
2017-09-07 23:34:53

博主,突然想起一个问题,就是我admin后台看到的Create time和Modified time 这两个字段的显示从哪来的?我记得编写models.py创建的字段是created_time和modified_time,那么后台显示是django默认显示的还是我哪一步操作得来的呢?谢谢啦

回复
追梦人物 heidanchaofanhei
2017-09-08 12:22:11

你在 admin 中定义了你要显示的字段:

class PostAdmin(admin.ModelAdmin):
    list_display = ['title', 'created_time', 'modified_time', 'category', 'author']
回复
heidanchaofanhei 追梦人物
2017-09-08 14:49:37

list_display = ['title', 'created_time', 'modified_time', 'category', 'author'],这里面的字段是django系统默认就有的么?我好奇的是admin后台显示出来的跟我定义的字段名字大小写样式都不一样。

回复
追梦人物 heidanchaofanhei
2017-09-08 17:23:23

django 对字段名做了一些美化处理,具体可以查看 admin 的文档或者看 admin 的代码就知道了。

回复
LINDAZS
2017-09-02 19:54:52

你说的media_root, 可以设置好路径保存图片, 之前做过一次展示图片, 在类里添加一个image的字段, 设置好上传的路径, 在设置项目的根目录下的urls, 把静态url添加上, 不然是找不到的,
settings.py
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\','/')
urls.py
from django.conf.urls.static import static
from django.conf import settings

最后加上, 就可以正常的拉起图片了.
urlpatterns += static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)

回复
添翼leo老师
2017-09-01 11:53:54

OperationalError at /practice/
no such table: blog_category
Request Method: GET
Request URL: http://127.0.0.1:8000/practice/
Django Version: 1.10.6
Exception Type: OperationalError
Exception Value:
no such table: blog_category
Exception Location: C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\backends\sqlite3\base.py in execute, line 337
Python Executable: C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\python.exe
Python Version: 3.6.1
Python Path:
['E:\passispn\passispn\passispn\quiz',
'C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\python36.zip',
'C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\DLLs',
'C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib',
'C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32',
'C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages',
'C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages\python_memcached-1.54-py3.6.egg',
'C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages\odf',
'C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages\odf',
'C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages\odf',
'C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages\odf',
'C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages\odf',
'C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages\odf',
'C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages\odf']

makemigrations
以及
migrate
命令都执行了
为什么会出现这样的问题?谢谢

回复
添翼leo老师 添翼leo老师
2017-09-01 11:58:58

看网上的解决方案
删除 db.sqlite3之后
makemigrations 以及 migrate 就可以解决

但是我的db.sqlite3 里面有很多的数据 不能删除

所以 不知道怎么办了 谢谢

回复
追梦人物 添翼leo老师
2017-09-01 15:11:17

no such table: blog_category

不知道你是否在哪一步出了错,让 django 误以为你已经生成了数据库表,但实际上没有。如果数据重要的话,最好不要乱动,以免使数据丢失。另外对于存在数据的项目,迁移数据库前一定要备份!

回复
添翼leo老师 追梦人物
2017-09-01 15:17:24

谢谢博主

数据 我已经备份了

接下来 我应该怎么做呢?

我都不知道要从哪里着手解决这个问题,谢谢

回复
追梦人物 添翼leo老师
2017-09-01 17:48:37

删掉全部 migrations 文件和数据库,重新做一遍

回复
花重-城
2017-08-28 10:33:13

博主,category 和tag 后台管理只显示category object ,和tag object123.。。需要怎么修改

回复
追梦人物 花重-城
2017-08-28 16:54:11

见之前关于 str 方法的教程里的内容

回复
花重-城
2017-08-27 22:40:39

OperationalError at /admin/blog/post/add/

no such table: blog_category

Request Method: GET
Request URL: http://127.0.0.1:8000/admin/blog/post/add/
Django Version: 1.11.4
Exception Type: OperationalError
Exception Value:

no such table: blog_category

Exception Location: C:\Users\xin\AppData\Roaming\Python\Python36\site-packages\django\db\backends\sqlite3\base.py in execute, line 328
Python Executable: C:\Program Files\Python36\python.exe
Python Version: 3.6.2
Python Path:

['F:\Sublime Text 3\Sublime Text 3\手动案例\总结\djangotest',
'C:\Program Files\Python36\python36.zip',
'C:\Program Files\Python36\DLLs',
'C:\Program Files\Python36\lib',
'C:\Program Files\Python36',
'C:\Users\xin\AppData\Roaming\Python\Python36\site-packages',
'C:\Program Files\Python36\lib\site-packages']

Server time: 星期日, 27 八月 2017 14:37:07 +0000

没有跟着教程走虚拟环境,在

from blog.models import Category, Tag, Post
c = Category(name='category test')
c.save()
t = Tag(name='tag test')
t.save()
c.save() 的时候就报错了,所以就直接创建的项目,别的地方都没问题,在这块点post后出现的错误,缺少表

回复
花重-城 花重-城
2017-08-28 10:30:30

解决了,数据库创建表后没有同步,报错缺少那个表

回复
leonfrank
2017-08-26 09:30:12

博主,我想问几个问题
1. 我发布的文章有保存到哪个文件吗?可以在哪个目录下找到
2. 文章里可以有插入图片操作吗,图片要上传到哪个目录
3. 我在网上看到的别的介绍里说可以配置media_root这一项来保存数据文件,这个怎么用
4. 网站可以有注册功能吗,怎么实现

回复
追梦人物 leonfrank
2017-08-27 12:15:47
  1. 保存在数据库中,你可以在 xx.sqlite3 文件中找到
  2. 教程中不支持,但可以采用 markdown 的方式替代实现
  3. 比较复杂,可以自行研究文档:https://docs.djangoproject.com/en/1.10/topics/files/
  4. 见我的另一个教程,Django 用户注册系统:http://zmrenwu.com/category/django-auth-example/
回复
nice粉条
2017-08-06 11:28:52

list_display = ['title', 'created_time', 'modified_time', 'category', 'author'] 博主,这种在后台的展示可以设置别名么 例如 展示的时候显示 “标题”,“创建时间” 有什么方法么 我看 list_display的方法为 返回字段 ‘str

回复
追梦人物 nice粉条
2017-08-07 19:46:23

这个还真没有研究过,可以查查 admin 的文档。

回复
Hogantry nice粉条
2017-08-29 16:57:22

title = models.CharField(max_length=70, verbose_name='标题')
加个verbose_name属性就好了

回复
米粥fly怕素色pool
2017-08-06 09:54:49

你好,博主 这啥情况?
OperationalError at /admin/blog/post/add/
no such table: blog_post
Request Method: POST
Request URL: http://127.0.0.1:8000/admin/blog/post/add/
Django Version: 1.11.3
Exception Type: OperationalError
Exception Value:
no such table: blog_post
Exception Location: /home/leodowhat/.pyenv/versions/test/lib/python3.6/site -packages/django/db/backends/sqlite3/base.py in execute, line 328

回复
追梦人物 米粥fly怕素色pool
2017-08-06 11:05:08

运行 python manage.py makemigrations 和 migrate 么?具体见前边的几篇教程。

回复
世事可否有转机
2017-07-27 11:39:13

你好,请问博主,我post了,还是显示暂时未发布文章,检查了index.html,应该没问题呀。

回复
世事可否有转机 世事可否有转机
2017-07-27 11:45:39

已经解决,修改了views.py

回复
某王府偷狗大盗 世事可否有转机
2017-09-22 14:45:58

可以请问一下你是如何修改的吗?我也遇到了类似的问题

回复
恠往逺方
2017-07-26 21:55:17

楼主,还有个问题我用的是python2.7+Django1.11.3在后台管理中添加中文的时候报错,1.11.3是不能添加中文的吗?

回复
追梦人物 恠往逺方
2017-07-27 11:25:15

可以的,这可能是 py2 的编码问题,按照错误提示修复一下编码应该就行了。

回复
wangmeng 恠往逺方
2018-04-19 14:00:47

在models中为Post,Tag,Category上面添加:@python_2_unicode_compatible即可。
我自己用的是python2.7+Django 1.8 亲测。

回复
恠往逺方
2017-07-26 09:15:08

楼主,为什么我的后台显示里面没有那三个注册的模块啊?

回复
恠往逺方 恠往逺方
2017-07-26 21:53:58

已经解决了,没有用admin.site.register()函数

回复
杰木四水
2017-07-20 22:00:43

希望有时间能详细写写定制后台的文章,感谢你的文章。

回复
追梦人物 杰木四水
2017-07-21 09:34:01

这在官方文档的 tutorial 中有详细示例,我就不重复了。

回复
小朩头人
2017-07-04 09:26:32

请教下,输出显示的文章 与原输入不匹配;主要是回车/换行差异太大。是不是存的时候data写入表,显示时读data,造成的?

回复
追梦人物 小朩头人
2017-07-04 10:36:09

html 会将任何回车,多个空格替换为 1 个空格。解决方案是使用 Markdown 或者手动加入 br 换行。

回复
让你懂事让你乖
2017-06-24 10:17:19

楼主,我在admin的post列表页,Category这一列下的值都为Category object而不是你图上所示的分类测试,请问是哪里出了问题

回复
追梦人物 让你懂事让你乖
2017-06-24 11:15:52

添加 str 方法,具体见这篇教程 http://zmrenwu.com/post/6

回复
abulimity
2017-06-21 18:55:34

请教一下楼主哇
在后台添加Post的时候报错了 文章title是《第一篇文章》
"" needs to have a value for field "id" before this many-to-many relationship can be used.
是没有自动生成pk吗?

回复
追梦人物 abulimity
2017-06-22 20:31:38

需要相关代码才能确定问题,从描述来看可能是保存了多对多的数据。

回复
abulimity
2017-06-21 18:49:27

请问每个app对应一个admin还是一个admin可以管理所有app

回复
追梦人物 abulimity
2017-06-22 20:30:44

每个 app 下都有一个 admin 文件,admin 相关的代码需要放在这里面。

回复
wlz
2017-06-20 17:03:14

在添加完Post后,输入 http://127.0.0.1:8000/ 打开不是文章列表,还是显示
“欢迎访问我的博客首页” ,是不是还需要修改某个地方??

回复
追梦人物 wlz
2017-06-20 17:18:42

修改 index 模板。

回复
wlz 追梦人物
2017-06-20 17:35:42

回复
chen@hy
2017-06-19 16:34:28

请教一下博主,其他都正常,就是create time和modified time不显示内容,主页上文章的创建时间也不显示,也并没有报错,这是为什么呢?

回复
追梦人物 chen@hy
2017-06-19 16:45:36

看下 model 代码

回复
chen@hy 追梦人物
2017-06-19 18:06:26

models里面是:create_time=models.DateTimeField()
modified_time=models.DateTimeField()
index.html里是:

回复
追梦人物 chen@hy
2017-06-19 18:13:23

可能是你在后台没有设置值?不过这样后台应该不允许你保存文章的。

回复
chen@hy 追梦人物
2017-06-19 18:14:27

models里面是:create_time=models.DateTimeField()
modified_time=models.DateTimeField()
index.html里是:

回复
chen@hy chen@hy
2017-06-19 18:15:05

多点了一下。。。

回复
追梦人物 chen@hy
2017-06-19 18:19:14

和 admin 设置无关,你在后台的文章表单没有设置时间选项么?

回复
chen@hy 追梦人物
2017-06-19 18:28:38

是指在创建和修改post的时候么,有时间选项,填的时候也有内容,但回到post界面和主页时候时间就不显示了

回复
追梦人物 chen@hy
2017-06-19 19:05:08

那就不知道了,可能是数据库问题?Mysql?

回复
无头骑士Derek chen@hy
2018-03-08 17:04:33

一样的问题,请问你解决了吗

回复
XFeng7
2017-06-16 16:50:02

请问这个问题怎么解决呀?头皮发麻。。。。
Unhandled exception in thread started by .wrapper at 0x000001FC9F8881E0>
Traceback (most recent call last):
File "D:\new_start\blogproject_env\lib\site-packages\django\utils\autoreload.py", line 226, in wrapper
fn(args, *kwargs)
File "D:\new_start\blogproject_env\lib\site-packages\django\core\management\commands\runserver.py", line 121, in inner_run
self.check(display_num_errors=True)
File "D:\new_start\blogproject_env\lib\site-packages\django\core\management\base.py", line 420, in check
raise SystemCheckError(msg)
django.core.management.base.SystemCheckError: SystemCheckError: System check identified some issues:

ERRORS:
: (admin.E108) The value of 'list_display[3]' refers to 'category', which is not a callable, an attribute of 'PostAdmin', or an attribute or method on 'blog.Post'.

System check identified 1 issue (0 silenced).

回复
XFeng7 XFeng7
2017-06-16 16:59:52

解决了,谢谢博主的文章。:D

回复
zy410692 XFeng7
2017-11-07 14:52:38

怎么解决的??

回复
rex.wang zy410692
2018-03-24 02:40:29

你试试检查一下你的,list里的拼写

回复
benq1211
2017-06-14 13:59:59

post在管理界面添加后,显示没有name字段
AttributeError at /admin/blog/post/add/
'Post' object has no attribute 'name'
Request Method: POST
Request URL: http://192.168.1.217:8000/admin/blog/post/add/
Django Version: 1.10.5
Exception Type: AttributeError
Exception Value:
'Post' object has no attribute 'name'
Exception Location: /mnt/siteone/blog/models.py in str, line 35
Python Executable: /root/.pyenv/versions/magedu/bin/python
Python Version: 3.5.2
Python Path:
['/mnt/siteone',
'/root/.pyenv/versions/3.5.2/lib/python35.zip',
'/root/.pyenv/versions/3.5.2/lib/python3.5',
'/root/.pyenv/versions/3.5.2/lib/python3.5/plat-linux',
'/root/.pyenv/versions/3.5.2/lib/python3.5/lib-dynload',
'/root/.pyenv/versions/magedu/lib/python3.5/site-packages']
Server time: 星期三, 14 六月 2017 13:57:34 +0800

回复
追梦人物 benq1211
2017-06-14 14:53:48

去掉 str 方法中的 name

回复
benq1211 追梦人物
2017-06-14 14:58:30

谢谢,我直接返回title了

回复
huapc
2017-06-14 00:52:47

请问访问http://127.0.0.1:8000/admin/ 会出现如下错误
A server error occurred. Please contact the administrator.是怎么回事?

回复
追梦人物 huapc
2017-06-14 09:38:01

关了代理软件等。

回复
huapc 追梦人物
2017-06-15 00:18:24

谢谢!已解决,是时区写错了,不能正确识别

回复
仗剑踏歌行_Hung
2017-06-10 05:03:33

访问 http://127.0.0.1:8000/admin/ 会出现如下错误。。。。求解 谢谢T__T
Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/admin/
Using the URLconf defined in blogproject.urls, Django tried these URL patterns, in this order:
^$ [name='index']
The current URL, admin/, didn't match any of these.
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.

回复
仗剑踏歌行_Hung 仗剑踏歌行_Hung
2017-06-10 05:29:48

已解决。。。。我之前把 在blogproject/urls.py里的这行给注释掉了

url(r'^admin/', admin.site.urls)。 改回来就好了。。。

回复
liuchengfei
2017-05-25 20:27:27

访问 http://127.0.0.1:8000/ 首页
环境:python3.4,django1.10
报错如下:

Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/index.html

Using the URLconf defined in blogproject.urls, Django tried these URL patterns, in this order:

^admin/
^$ [name='index']

The current URL, index.html, didn't match any of these.

回复
夹缝中难以生存 liuchengfei
2017-06-07 15:19:03

找到解决的方法了么?

回复
liuchengfei 夹缝中难以生存
2017-06-07 15:24:45

不要输入index.html

回复
夹缝中难以生存 liuchengfei
2017-06-07 15:41:44

好的谢谢。
我是urls.py里面一行代码注释了。

回复
jyzdream liuchengfei
2017-06-09 16:58:56

你好,我也遇到这个问题,请问不要输入index.html是什么意思?

回复
追梦人物 jyzdream
2017-06-09 17:14:56

就是不要去掉域名后 .html

回复
仗剑踏歌行_Hung 追梦人物
2017-06-10 05:02:01

不好意思 我也是卡在这里, 还是没有看明白您的解释T__T

回复
仗剑踏歌行_Hung 追梦人物
2017-06-10 05:28:17

已解决 谢谢

回复
我是单永旭
2017-05-12 14:12:38

博主,在美化 admin 后台的时候,注册了PostAdmin之后,刷新网页没效果可能是什么原因呢?python3.4,django1.10

回复
追梦人物 我是单永旭
2017-05-12 15:03:23

重启一下开发服务器试试?需要看一下你的注册代码是否有误?

回复
无头骑士Derek 我是单永旭
2018-03-08 17:05:23

我也遇到这个问题了,请问你解决了吗

回复
tianjigor
2017-05-09 23:52:14

我是用py2.7的,直接写中文保存会报'ascii' codec can't encode characters in position 0-1: ordinal not in range(128),在admin.py加上
import sys
reload(sys)
sys.setdefaultencoding("utf8")
才OK,估计py3没这个问题出现

回复
我是单永旭 tianjigor
2017-05-12 14:05:37

python貌似在用中文的时候应该要在第一行写上#coding:utf-8

回复