django 简易博客开发 1 安装、创建、配置、admin使

软件环境

  Django 自称是“最适合开发有限期的完美WEB框架”。本文参考《Django web开发指南》,快速搭建一个blog 出来,在中间涉及诸多知识点,这里不会详细说明,如果你是第一次接触Django ,本文会让你在感性上对Django有个认识,完成本文操作后会让你有兴趣阅读的相关书籍和文档。

Pycharm 2018.1

废话少说,come on!!

Python 3.6

本操作的环境:

Django 2.0.3

===================

 

Windows 7/10

1、新建项目

python 2.7

直接使用Pycharm的菜单来创建项目,命名为mysite。

Django 1.8.2

mysite

  mysite

    __init__.py

    settings.py

    urls.py

    wsgi.py

  templates

  manage.py

===================

 

 

2、新建应用

 

使用Pycharm的tools菜单下的Run manage.py Task,在弹出的窗口中输入以下命令:

创建工程                                                                                                         

startapp blog

 

blog

  migrations

  __init__.py

  admin.py

  apps.py

  models.py

  tests.py

  views.py

创建mysite工程项目:

 

D:/djpy> django-admin.py startproject mysite

3、将blog应用加到setting.py文件中的INSTALLED_APPS中

工程目录结构:

INSTALLED_APPS = [

  'blog',

]

金沙官网线上 1

 

manage.py ----- Django项目里面的工具,通过它可以调用django shell和数据库等。

4、编写第一个Model

settings.py ---- 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。

编辑blog下的models.py文件,输入:

urls.py ----- 负责把URL模式映射到应用程序。

from django.db import models


class BlogPost(models.Model):
    title = models.CharField(max_length=150)
    body = models.TextField()
    timestamp = models.DateTimeField()

    class Meta:
        ordering = ['-timestamp']

 

 

 

5、设置数据库

创建blog应用                                                                                                  

一般使用默认的sqlite即可,也可以使用mysql。在settings.py中设置。

 

 

在mysite目录下创建blog应用

6、创建表

D:/pydj> cd mysite

D:/djpy/mysite$ python manage.py startapp blog

在Run manage.py Task中分别执行:

目录结构:

makemigrations

金沙官网线上 2

migrate

 

可以看到表被生成了。

 

 

初始化admin后台数据库                                                                                               

7、创建超级用户(用于登录admin平台)

 

在Run manage.py Task中执行如下命令:

  python 自带SQLite数据库,Django支持各种主流的数据库,这里为了方便推荐使用SQLite,如果使用其它数据库请在settings.py文件中设置。

createsuperuser

切换到mysite创建数据库:

依次输入用户名,邮箱,密码即可。

金沙官网线上 3;)

 

D:/djpy/mysite$ python manage.py syncdb

8、注册BlogPost应用

C:Python27libsite-packagesdjangocoremanagementcommandssyncdb.py:24: RemovedInDjango19Warning: The syncdb command will be removed in Django 1.9   warnings.warn("The syncdb command will be removed in Django 1.9", RemovedInDjango19Warning)

为了在admin管理平台上直接添加、删除文章,我们需要编辑admin.py文件:

Operations to perform:   Synchronize unmigrated apps: staticfiles, messages   Apply all migrations: admin, contenttypes, auth, sessions Synchronizing apps without migrations:   Creating tables...     Running deferred SQL...   Installing custom SQL... Running migrations:   Rendering model states... DONE   Applying contenttypes.0001_initial... OK   Applying auth.0001_initial... OK   Applying admin.0001_initial... OK   Applying contenttypes.0002_remove_content_type_name... OK   Applying auth.0002_alter_permission_name_max_length... OK   Applying auth.0003_alter_user_email_max_length... OK   Applying auth.0004_alter_user_username_opts... OK   Applying auth.0005_alter_user_last_login_null... OK   Applying auth.0006_require_contenttypes_0002... OK   Applying sessions.0001_initial... OK

from django.contrib import admin

from blog.models import BlogPost


class BlogPostAdmin(admin.ModelAdmin):
    list_display = ['title', 'timestamp']

admin.site.register(BlogPost, BlogPostAdmin)

You have installed Django's auth system, and don't have any superusers defined. Would you like to create one now? (yes/no): yes Username (leave blank to use 'fnngj'):    用户名(默认当前系统用户名) Email address: fnngj@126.com     邮箱地址 Password:     密码 Password (again):    重复密码 Superuser created successfully.

 

金沙官网线上 4;)

9、启动web服务器

 

访问http://127.0.0.1/admin

 

金沙官网线上,输入用户名密码即可。

设置admin应用                                                                                   

 

  

10、创建博客的展示页面

  admin 是Django 自带的一个后台管理系统。

在blog目录下新建templates目录,然后在templates目录下新建archive.html文件。

1、添加blog应用,打开mysite/mysite/settings.py 文件:

{% for post in posts %}
    <h2>{{ post.title }}</h2>
    <p>{{ post.timestamp | date }}</p>
    <p>{{ post.body }}</p>
{% endfor %}

金沙官网线上 5;)

 

# Application definition

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
)

11、创建视图函数

金沙官网线上 6;)

from django.template import loader
from django.http import HttpResponse
from blog.models import BlogPost


def archive(request):
    posts = BlogPost.objects.all()
    t = loader.get_template('archive.html')
    return HttpResponse(t.render({'posts': posts}))

在列表末尾,添加blog 应用

 

 

12、配置URL路径

2、在我们创建django项目时,admin就已经创建,打开mysite/mysite/urls.py文件:

先修改总URL文件:项目下的urls.py文件,与settings.py同级。

金沙官网线上 7;)

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', include('blog.urls'))
]
from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
]

 

金沙官网线上 8;)

然后修改子URL文件:应用blog下的urls.py文件,没有就新建,与views.py同级。

 

from blog.views import archive
from django.urls import path

urlpatterns = [
    path('', archive)
]

3、启动django容器

 

金沙官网线上 9;)

13、启动web服务器,查看效果

D:pydjmysite>python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
October 04, 2015 - 20:56:45
Django version 1.8.2, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

 

金沙官网线上 10;)

14、编写基础模板,让其他模板来继承

 

在templates下新建base.html文件,内容如下:

4、访问后台应用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>基础页面</title>
    <style type="text/css">
        body {
            color: #efd;
            background: #453;
            padding: 0 5em;
            margin: 0;
        }
        h1 {
            padding: 2em 1em;
            background: #675;
        }
        h2 {
            color: #bf8;
            border-top: 1px dotted #fff;
            margin-top: 2em;
        }
        p {
            margin: 1em 0;
        }
    </style>
</head>
<body>
    <h1>mysite.example.com</h1>
    {% block content %}
    {% endblock %}
</body>
</html>
http://127.0.0.1:8000/admin

 

金沙官网线上 11

15、重新修改archive.html文件

输入用户、密码,用户名密码为第一次创建数据库时创建的。回想“设置数据库”时的设置。

{% extends 'base.html' %}
{% block content %}
    {% for post in posts %}
        <h2>{{ post.title }}</h2>
        <p>{{ post.timestamp}}</p>
        <p>{{ post.body }}</p>
    {% endfor %}
{% endblock %}

 

 

 

16、模板中的过滤器

设计Model(即设计数据库表)                                 

<p>{{ post.timestamp | date }}</p>

 

管道后面通过date函数来进行过滤。

1、设计model

 

  现在我们打开blog目录下的models.py文件,这是我们定义blog数据结构的地方。打开mysite/blog/models.py 文件进行修改:

17、启动web服务器,检查效果

金沙官网线上 12;)

 

from django.db import models
from django.contrib import admin

# Create your models here.
class BlogsPost(models.Model):
    title = models.CharField(max_length = 150)
    body = models.TextField()
    timestamp = models.DateTimeField()

admin.site.register(BlogsPost)

以上就是使用django开发web应用的一般流程。

金沙官网线上 13;)

 

2、 再次初始化数据库

金沙官网线上 14;)

D:pydjmysite>python manage.py makemigrations blog
Migrations for 'blog':
  0001_initial.py:
    - Create model BlogsPost

D:pydjmysite>python manage.py syncdb
C:Python27libsite-packagesdjangocoremanagementcommandssyncdb.py:24: RemovedInDjango19Warning: The syncdb command will be removed in Django 1.9
  warnings.warn("The syncdb command will be removed in Django 1.9", RemovedInDjango19Warning)

Operations to perform:
  Synchronize unmigrated apps: staticfiles, messages
  Apply all migrations: admin, blog, contenttypes, auth, sessions
Synchronizing apps without migrations:
  Creating tables...
    Running deferred SQL...
  Installing custom SQL...
Running migrations:
  Rendering model states... DONE
  Applying blog.0001_initial... OK

金沙官网线上 15;)

 

 

3、再次runserver启动服务,访问admin后台,创建文章。

本文由金沙官网线上发布于操作系统,转载请注明出处:django 简易博客开发 1 安装、创建、配置、admin使

您可能还会对下面的文章感兴趣: