Django学习---多人博客项目(1)

一、创建项目和应用

​ 在Pycharm中用Django模板创建一个工程文件

创建项目
    python manage.py startproject 项目名 .
创建应用
    python manage.py startapp 应用名

二、配置项目名中的settings文件

#1、添加应用
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog', #将添加的应用添加在此处
]
#2、设置编码为中文
LANGUAGE_CODE = 'zh-Hans'  # 'en-us'
#3、设置时区
TIME_ZONE = 'Asia/Shanghai'  #'UTC'
USE_I18N = True
USE_L10N = True
#4、改为False时区才能生效
USE_TZ =  False #True

​ 完成上述步骤可以启动Django服务器看看能否运行出初始界面

python manage.py runserver

三、添加数据模型

在应用程序(blog)的models.py文件中添加数据模型

from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
# Create your models here.


class BlogArticles(models.Model):
    title = models.CharField(max_length=300)
    author = models.ForeignKey(User, on_delete=models.CASCADE, related_name="blog_posts")
    body = models.TextField()
    publish = models.DateTimeField(default=timezone.now)
    
    class Meta:
        ordering = ("-publish",)
        
        def __str__(self):
            return self.title

数据模型添加后执行如下命令

python manage.py makemigrations

接着执行数据迁移命令

python manage.py migrate

四、创建超级用户

python manage.py createsuperuser
    用户名:admin 
    邮箱:[email protected]
    密码:django1234

刷新浏览器,使用上述账号和密码进行登录

五、数据模型注册

在应用程序名(blog)下的admin.py中注册数据模型类

from django.contrib import admin
from .models import BlogArticles    #导入数据模型类到当前文件夹
admin.site.register(BlogArticles)   #将该类注册到admin中

刷新浏览器,出现博客功能,优化数据注册模型:

from django.contrib import admin
from .models import BlogArticles    #导入数据模型类到当前文件夹

class BlogArticlesAdmin(admin.ModelAdmin):
    list_display = ("title", "author", "publish")
    list_filter = ("publish", "author")
    search_fields = ("title", "body")
    # raw_id_fields = ("author") #这一句添加感觉有点问题,在后面刷新后重新写博客author哪儿不能选择了,造成博客生成不了,注释了即可
    date_hierarchy = "publish"
    ordering = ['-publish', 'author']
admin.site.register(BlogArticles, BlogArticlesAdmin)    #将该类注册到admin中

六、显示博客标题

(1)添加视图

​ 在./blog/views.py文件中添加基于视图的函数(还有一种视图是基于类的视图)

from django.shortcuts import render
from .models import BlogArticles

def blog_title(request):
    blogs = BlogArticles.objects.all()
    return render(requset, "blog/titles.html", {"blogs": blogs})

(2)添加模板

​ 在templates中添加基础模板base.html文件,内容如下:




    
    
    
    {% block title %}{% endblock %}
    
    


    
{% block content %} {% endblock %}

​ 在./templates/blog/下面创建titles.html, 添加如下内容:

{% extends "base.html" %}
{% block title %}blog titles{% endblock %}
{% block content %}
    

我的博客

    {% for blog in blogs %}
  • {{ blog.title }}
  • {% endfor %}

广告

跟老齐学:www.itdiffer.com

{% endblock %}

(3)配置路由

路由需要配置两个地方的路由

# 配置 ./mystie/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns=[
    path('admin/',admin.site.urls),
    path('blog/', inclue('blog.urls'))
]

# 上面用到的blog.urls还没有创建在./blog/下创建urls.py 并添加如下内容:
from django.urls import path
from . import views
urlpatterns = [
    path('', views.blog_title), #此处将函数视图添加进来
]

七、显示博客内容

(1)文章标题设置超链接

​ 首先需要在titels.html中显示标题的部分做相应修改。即给标题添加超链接,如下:

{% for blog in blogs %}
    
  • {{blog.title}}
  • {% endfor %}

    (2)添加视图

    ​ 编辑./blog/view.py,增加响应查看文章详情的请求函数blog_article()

    def blog_article(request, article_id):
        article = BlogArticles.objects.get(id=article_id)
        pub = article.publish
        return render(request, "blog/content.html", {"article":article, "publish":pub})

    (3)添加模板

    ​ 在./templates/blog/下面创建content.html, 添加如下内容:

    {% extends "base.html" %}
    {% block title %}blog article{% endblock %}
    {% block content %}
        

    {{article.title}}

    {{article.author.username}} {{publish}}

    {{article.body}

    广告

    跟老齐学:www.itdiffer.com

    {% endblock %}

    (4)配置路由

    # ./mystie/urls.py 不需要修改
    
    # ./blog/urls.py 添加博客内容也的路由
    from django.urls import path
    from . import views
    urlpatterns = [
        path('', views.blog_title), #此处将函数视图添加进来
        path('', views.blog_article),
    ]

    (4)处理异常

    from django.shortcuts import render, get_object_or_404
    from .models. import BlogArticles
    def blog_article(request, article_id):
        #article = BlogArticles.objects.get(id=article_id)
        article = get_object_or_404(BlogArticles, id=article_id)
        pub = article.publish
        return render(request, "blog/content.html", {"article":article, "publish":pub})

    你可能感兴趣的:(Django学习---多人博客项目(1))