Django 基础博客的建立

来源:互联网 发布:dac 单片机 编辑:程序博客网 时间:2024/05/29 04:17

 目录 1

set配置 1

建立项目应用模板2

URL 配置 2

博客页面构造 3

视图函数views 3

前台HTML 4

Index部分 4

article_page部分 5

edit_page 部分 5

启动命令   6

 

学习笔记:

 

Ps:编译环境:国产linux-deepin, Django Version 1.11.4 , 编辑器vim

 

目录文件作用

settings.py:项目配置。

urls.py:URL配置。

models.py:数据模块。

views.py:视图函数,执行响应模块。

django请求响应原理图:





 目录

set配置

命令  hj@deepin:~/Desktop/huangjin/huangjin$ vim settings.py

代码

INSTALLED_APPS = [

    'django.contrib.admin',s

    'django.contrib.auth',

    'django.contrib.contenttypes',

    'django.contrib.sessions',

    'django.contrib.messages',

    'django.contrib.staticfiles',

    'blog',

]

  

LANGUAGE_CODE = 'zh-Hans' 

TIME_ZONE = 'Asia/Shanghai'

 

建立项目应用模板

hj@deepin:~/Desktop$ django-admin startproject huangjin    建立名为huangjin项目 

hj@deepin:~/Desktop$ python manage.py startapp blog       建立名为blog应用

hj@deepin:~/Desktop/huangjin/blog$ mkdir templates    #模板

hj@deepin:~/Desktop/huangjin/blog/templates$ mkdir blog  #避免多应用的同名HTML冲突创建一个以APP为名称的文件夹,将HTML文件放入到此文件夹下 

hj@deepin:~/Desktop/huangjin/blog/templates/blog$ touch index.html 

hj@deepin:~/Desktop/huangjin/blog/templates/blog$ touch article_page.html 

hj@deepin:~/Desktop/huangjin/blog/templates/blog$ touch edit_page.html 

 

Ps :indexhtml 文章主界面 article_page.html 文章内容页面 edit_page.html 编辑业面

 

URL 配置

在根目录urls.py中引入include ,在APP目录下创建/复制urls.py的同名文件,格式与个人那个目录下的urls.py相同

命令

hj@deepin:~/Desktop/huangjin/huangjin$ vim urls.py 

 

代码

from django.conf.urls import url,include

from django.contrib import admin

from blog.views import index

urlpatterns = [

    url(r'^admin/', admin.site.urls),

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

]

 

命令

hj@deepin:~/Desktop/huangjin$ cp huangjin/urls.py blog/urls.py #复制

hj@deepin:~/Desktop/huangjin/blog$ vim urls.py 

 

代码 

from django.conf.urls import url,include

from django.contrib import admin

from blog.views import index

from . import views

 

urlpatterns = [

    url(r'^index/$', index),

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

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

    url(r'^edit/action$',views.edit_action, name='edit_action'),    

        ]

 

博客页面构造

   主界面 Index.html 显示 新建、标题、内容三项

 

Django中model对应一张数据表,数据表以类的形式表现。在models.py中引入models模块创建类,继承models.Model. 在该类中创建数据表的字段

 

命令

hj@deepin:~/Desktop/huangjin/blog$ vim models.py  

代码

# -*- coding: utf-8 -*-

from __future__ import unicode_literals 

from django.db import models

 

from django.utils.encoding import python_2_unicode_compatible

# Create your models here.

class Article(models.Model):

title = models.CharField(max_length=32,default = 'Title')

content = models.TextField(null=True)

 

  

视图函数views

命令

hj@deepin:~/Desktop/huangjin/blog$ vim views.py 

代码

from django.shortcuts import render

from . import models

from django.http import HttpResponse

 

# -*- coding: utf-8 -*-

from __future__ import unicode_literals 

from django.shortcuts import render 

from django.http import HttpResponse 

from . import models

 

# Create your views here.

def index(request):

articles=models.Article.objects.all()  

return render(request, "blog/index.html",{'articles':articles})

 

def article_page(request,article_id):

article = models.Article.objects.get(pk=article_id)

return render(request,'blog/article_page.html',{'article':article})

 

def edit_page(request,article_id):

if str(article_id)== '0':

return render(request,'blog/edit_page.html')

article = models.Article.objects.get(pk=article_id)

return render(request,'blog/edit_page.html',{'article':article})  

 

def edit_action(request):

title = request.POST.get('title','TITLE')

content = request.POST.get('content','CONTENT')

article_id = request.POST.get('article_id','0')

if article_id =='0':

models.Article.objects.create(title=title,content=content)

articles=models.Article.objects.all()

return render(request, "blog/index.html",{'articles':articles})

 

article = models.Article.objects.get(pk=article_id)

article.title=title

article.content=content

article.save()

return render(request,'blog/article_page.html',{'article':article})

 

 

前台HTML

Index部分

命令

hj@deepin:~/Desktop/huangjin/blog/templates/blog$ vim index.html

 

代码

<html>

<head>

<meta http-equiv="content-type" content="text/html; charset=utf-8">

<script type="text/javascript">window.onscroll = function() { synchronizer.webViewScrolled(); }; </script>

<title>Title</title>

</head>

<body>

<h1><a href="{% url 'blog:edit_page' 0 %}">新文章</a></h1>

<br/>

{% for article in articles %}

<a href="{% url 'blog:article_page' article.id %}">{{article.title}}</a>

<br/>

{% endfor %}

</body>

</html> 

 

article_page部分

<html>

<head>

<meta http-equiv="content-type" content="text/html; charset=utf-8">

<script type="text/javascript">window.onscroll = function() { synchronizer.webViewScrolled(); }; </script>

<title>Article Page</title>

</head>

<body>

<h1>{{article.title}}</h1>

<br/>

<h3>{{article.content}}</h3>

<br/>

<br/>

<a href="{% url 'blog:edit_page' article.id %}">修改文章</a>

</body>

</html> 

 

edit_page 部分

<html>

<head>

<meta http-equiv="content-type" content="text/html; charset=utf-8">

<script type="text/javascript">window.onscroll = function() { synchronizer.webViewScrolled(); }; </script>

<title>Edit Page</title>

</head>

<body>

<form action="{% url 'blog:edit_action' %}" method="post">

{% csrf_token %}

<input type="hidden" name="article_id" value="{{article.id | default:'0'}}">

<label>文章标题

<input type="text" name="title" value="{{article.title}}" />

</label>

<br/>

<label>文章内容

<input type="text" name="content" value="{{article.content}}" />

</label>

<br/>

<input type="submit" value="提交">

</form>

</body>

</html>

 

  

启动命令  

数据迁移命令:

hj@deepin:~/Desktop/huangjin$ python manage.py makemigrations

hj@deepin:~/Desktop/huangjin$ python manage.py migrate

运行django

hj@deepin:~/Desktop/huangjin$ python manage.py runserver

 

Over

 

Ps:主页地址:http://127.0.0.1:8000/blog/index/ 

 

目录结构

hj@deepin:~/Desktop$ tree huangjin/

huangjin/

├── blog

│   ├── admin.py

│   ├── admin.pyc

│   ├── apps.py

│   ├── __init__.py

│   ├── __init__.pyc

│   ├── migrations

│   │   ├── 0001_initial.py

│   │   ├── 0001_initial.pyc

│   │   ├── __init__.py

│   │   └── __init__.pyc

│   ├── models.py

│   ├── models.pyc

│   ├── templates

│   │   └── blog

│   │       ├── article_page.html

│   │       ├── edit_page.html

│   │       └── index.html

│   ├── tests.py

│   ├── urls.py

│   ├── urls.pyc

│   ├── views.py

│   └── views.pyc

├── db.sqlite3

├── huangjin

│   ├── __init__.py

│   ├── __init__.pyc

│   ├── settings.py

│   ├── settings.pyc

│   ├── urls.py

│   ├── urls.pyc

│   ├── wsgi.py

│   └── wsgi.pyc

└── manage.py

 

 

 

 

 

 

 

 

 

 

原创粉丝点击