django制作简易博客

时间:2020-12-25 20:41:32

python3.5 django2.0.1

1.创建MyBlog项目

用Pycharm创建,打开菜单中的file>new project

django制作简易博客

创建项目后的目录如下:

django制作简易博客

也可以用命令行来创建项目

Windows+r输入cmd,打开cmd后cd desktop到桌面这样项目也就创建到桌面了,这样方便查看。

django制作简易博客

django制作简易博客django制作简易博客django制作简易博客django制作简易博客2.主要代码

创建所需文件,目录如下:

其中templates文件夹是为了存放前端页面。当一个项目有多个app时且templates下又有相同的html文件时,当打开该重名文件时,只会打开settings.py中INSTALLED_APPS中先写入app的html文件,所以在templates文件夹下建个bloghtml文件用于区分。当项目有很多app时,所有url设置都写在项目下的urls.py下会很杂乱,所以每个app新建一个urls.py,用来设置自己的url。

django制作简易博客

settings.py

用pycharm创建的app会自动写入下面的设置中,用cmd创建的app需要自己手动写入下面的设置里。LANGUAGE_CODE = 'zh-Hans'用来设置语言为汉语

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog.apps.BlogConfig',
]

LANGUAGE_CODE = 'zh-Hans'
项目文件夹下的urls.py

from django.contrib import admin
from django.urls import path,include
#include把我们创建的app下的urls.py包含
urlpatterns = [
path('admin/', admin.site.urls),
path('blog/', include('blog.urls', namespace='myblogapp'))
]

models.py

from django.db import models

# Create your models here.
# 创建数据模型
class Article(models.Model):
def __str__(self):
return self.title
#文章的标题
title = models.CharField(max_length=32,default='Title')
#文章的内容
content = models.TextField(null=True)

进行数据

django制作简易博客

我们的目录里会多出个数据库文件,可以下载sqlitestudio这个工具查看管理https://sqlitestudio.pl/index.rvt?act=download

index.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>
<a href="{% url 'blogapp:editpage' 0%}">新建文章</a>
</h1>
{% for art in arts %}
<a href="{% url 'blogapp:artpage' art.id%}">{{ art.title }}</a>
{# <a href="artpage/{{art.id}}">{{art.title}}</a>#}
<br>
{% endfor %}

</body>
</html>

articlepage.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>articleapge</title>
</head>
<body>
<h1>{{ art.title }}</h1>
<br>
<h3>{{ art.content }}</h3>
<br>
<a href="{% url 'blogapp:editpage' art.id%}">修改文章</a>
</body>
</html>

editpage.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>EDitpage</title>
</head>
<body>
<form action="{% url 'blogapp:editaction' %}" method="post">
{% csrf_token %}
{% if art %}
<input type="hidden" name="articleid" value="{{ art.id }}"/>
<label>文章标题
<input type="text" name="title" value="{{ art.title }}">
</label>
<br>
<label>文章内容
<input type="text" name="content" value="{{ art.content }}">
</label>
<br>
{% else %}
<input type="hidden" name="articleid" value="0"/>
<label>文章标题
<input type="text" name="title">
</label>
<br>
<label>文章内容
<input type="text" name="content">
</label>
<br>
{% endif %}
<input type="submit" value="提交保存">

</form>

</body>
</html>

views.py
from django.shortcuts import render
from django.shortcuts import HttpResponse
from . import models
# Create your views here.
def index(request):
articles = models.Article.objects.all()
return render(request,'bloghtml/index.html',{'arts':articles})
def artpage(request,articleid):
article = models.Article.objects.get(pk=articleid)
return render(request,'bloghtml/articlepage.html',{'art':article})
def editpage(request,articleid):
if str(articleid)=='0':
return render(request,'bloghtml/editpage.html')
article = models.Article.objects.get(pk=articleid)
return render(request, 'bloghtml/editpage.html', {'art': article})
def editaction(request):
title = request.POST.get('title','TITLE')
content = request.POST.get('content','CONTENT')
articleid = request.POST.get('articleid','0')
if articleid =='0':
models.Article.objects.create(title=title,content=content)
articles = models.Article.objects.all()
return render(request, 'bloghtml/index.html', {'arts': articles})
artile = models.Article.objects.get(pk=articleid)
artile.title = title
artile.content = content
artile.save()
return render(request, 'bloghtml/articlepage.html', {'art': artile})
blog下urls.py

django2.0要写上app_name,想要获取‘article/<int:articleid>/’链接就可以写成{% url 'blogapp:artpage' %}

from django.conf.urls import url
from django.urls import path,re_path,include
from blog import views
#https://docs.djangoproject.com/en/2.0/ref/urls/#django.urls.path
app_name='blogapp'
urlpatterns = [
path('', views.index),
path('article/<int:articleid>/', views.artpage,name='artpage'),
# re_path(r'^article/(?P<articleid>[0-9]+)/$', views.artpage)
path('edit/<int:articleid>/',views.editpage,name='editpage'),
path('edit/action$/',views.editaction,name='editaction')
]

创建admin用户

django制作简易博客
创建运行后地址栏输入http://127.0.0.1:8000/admin/输入账户密码就可以登录

django制作简易博客

地址栏输入http://127.0.0.1:8000/blog/就可以访问我们简单的博客了,可以新建文章修改文章

django制作简易博客