django制作简易博客

python3.5 django2.0.1

1.创建MyBlog项目

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


创建项目后的目录如下:


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

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


2.主要代码

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

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


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)



进行数据

我们的目录里会多出个数据库文件,可以下载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用户


创建运行后地址栏输入http://127.0.0.1:8000/admin/输入账户密码就可以登录



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




  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值