美文网首页
Django开发简单Blog系统——下

Django开发简单Blog系统——下

作者: VoidKing | 来源:发表于2018-01-22 14:14 被阅读8次

前言

博客的基本功能完成了,接下来,我们来看一下还有哪些知识点可以加入我们的系统。

超链接

template中可以使用:

{% url 'app_name: url_name' param %}
  • app_name:应用命名空间的名称
  • url_name:链接名
  • param:参数

app_name和url_name都在urls.py中配置。

djsite/djsite/urls.py中

url(r'^blog/', include('blog.urls', namespace='blog')),

其中namespace='blog'代表的是app_name。

djsite/blog/urls.py中

url(r'^(?P<article_id>[0-9]+)$', views.detail, name='detail'),

其中name='detail'代表的是url_name。

比如,我们想要访问views.detail方法,那么在页面中,可以使用:

{% url 'blog:detail' article.id %}

实际上,这种写法并没有我们上一篇文章中的写法方便,因为ajax得到数据后无法使用这种写法,建议弃用。

django shell

django shell和python shell的不同,在于django shell里加入了项目的环境,这就方便了我们的调试。
比如,我们在django shell输入:

from blog.models import Article
Article.objects.all()
Article.objects.all().values()

即可打印出所有的文章。

Admin进阶

在之前的后台管理系统中,点击进入Articles,发现里面有很多Article Object,因为我们在blog/models.py中添加了__str__方法,所以显示的名称是文章标题。

那么,怎样把标题、内容、发布时间都显示出来呢?答案是修改blog/admin.py:

from django.contrib import admin
from . import models

# Register your models here.


class ArticleAdmin(admin.ModelAdmin):
    # 显示在admin控制台中的列名
    list_display = ('title', 'content', 'pub_time')
    # 时间过滤器
    list_filter = ('pub_time',)


admin.site.register(models.Article, ArticleAdmin)

改用mysql

sqlite,做一些测试还可以,但是在实际开发中,我们通常使用mysql。

1、假设我们的数据库用户名为root,密码为空,数据库名为djsite。

2、安装pymysql
pip install pymysql

3、修改djsite/djsite/settings.py:

# Database
# https://docs.djangoproject.com/en/1.11/ref/settings/#databases

# DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#     }
# }

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'NAME': 'djsite',
        'USER': 'root',
        'PASSWORD': '',
        'OPTIONS': {
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
        },
    }
}

4、修改djsite/djsite/__init__.py

import pymysql
pymysql.install_as_MySQLdb()

5、数据迁移
python manage.py makemigrations

python manage.py migrate

6、创建超级用户
python manage.py createsuperuser

源码分享

https://github.com/voidking/djsite/releases/tag/v0.3.0

书签

django入门与实践

Django 过滤器

相关文章

网友评论

      本文标题:Django开发简单Blog系统——下

      本文链接:https://www.haomeiwen.com/subject/dfmlaxtx.html