1. 前言
博客的基本功能完成了,接下来,我们来看一下还有哪些知识点可以加入我们的系统。
2. 超链接
template中可以使用:
1 | {% url 'app_name: url_name' param %} |
- app_name:应用命名空间的名称
- url_name:链接名
- param:参数
app_name和url_name都在urls.py中配置。
djsite/djsite/urls.py中
1 | url(r'^blog/', include('blog.urls', namespace='blog')), |
其中namespace='blog'
代表的是app_name。
djsite/blog/urls.py中
1 | url(r'^(?P<article_id>[0-9]+)$', views.detail, name='detail'), |
其中name='detail'
代表的是url_name。
比如,我们想要访问views.detail方法,那么在页面中,可以使用:
1 | {% url 'blog:detail' article.id %} |
实际上,这种写法并没有我们上一篇文章中的写法方便,因为ajax得到数据后无法使用这种写法,建议弃用。
3. django shell
django shell和python shell的不同,在于django shell里加入了项目的环境,这就方便了我们的调试。
比如,我们在django shell输入:
1 | from blog.models import Article |
即可打印出所有的文章。
4. Admin进阶
在之前的后台管理系统中,点击进入Articles,发现里面有很多Article Object,因为我们在blog/models.py中添加了__str__
方法,所以显示的名称是文章标题。
那么,怎样把标题、内容、发布时间都显示出来呢?答案是修改blog/admin.py:
1 | from django.contrib import admin |
5. 改用mysql
sqlite,做一些测试还可以,但是在实际开发中,我们通常使用mysql。
1、假设我们的数据库用户名为root,密码为空,数据库名为djsite。
2、安装pymysqlpip install pymysql
3、修改djsite/djsite/settings.py:
1 | # Database |
4、修改djsite/djsite/__init__.py
:
1 | import pymysql |
5、数据迁移python manage.py makemigrations
python manage.py migrate
6、创建超级用户python manage.py createsuperuser
6. 源码分享
https://github.com/voidking/djsite/releases/tag/v0.3.0