django 简易博客开发 1 安装、【澳门新葡亰赌995577】创建、配置、admin使用(转)

澳门新葡亰赌995577 11

软件环境

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

Pycharm
2018.1

废话少说,come on!!

Python
3.6

本操作的环境:

Django
2.0.3

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

 

Windows 7/10

1、新建项目

澳门新葡亰赌995577,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',

]

澳门新葡亰赌995577 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

澳门新葡亰赌995577 2

migrate

 

可以看到表被生成了。

 

 

初始化admin后台数据库                                                                                               

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

 

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

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

createsuperuser

切换到mysite创建数据库:

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

澳门新葡亰赌995577 3😉

 

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

8、注册BlogPost应用

C:\Python27\lib\site-packages\django\core\management\commands\syncdb.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.

 

澳门新葡亰赌995577 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 %}

澳门新葡亰赌995577 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、创建视图函数

澳门新葡亰赌995577 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同级。

澳门新葡亰赌995577 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)),
]

 

澳门新葡亰赌995577 8😉

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

 

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

urlpatterns = [
    path('', archive)
]

3、启动django容器

 

澳门新葡亰赌995577 9😉

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

D:\pydj\mysite>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.

 

澳门新葡亰赌995577 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

 

澳门新葡亰赌995577 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服务器,检查效果

澳门新葡亰赌995577 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应用的一般流程。

澳门新葡亰赌995577 13😉

 

2、 再次初始化数据库

澳门新葡亰赌995577 14😉

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

D:\pydj\mysite>python manage.py syncdb
C:\Python27\lib\site-packages\django\core\management\commands\syncdb.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

澳门新葡亰赌995577 15😉

 

 

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