Python学习笔记 - 使用django的内置功能开发网站(详细)

Python学习笔记 - 使用django的内置功能开发网站(详细)

Part 1 | 基本操作

安装django模块

django是第三方模块,因此需要下载。这里介绍2种下载方式。

使用PyCharm下载django

打开PyCharm,在菜单栏中找到: File > Settings,进入设置界面,在设置中寻找Settings > Project,点击设置界面右边的加号,在Search中搜索django,然后下载。

使用pip下载django

这个就没什么好说的了,打开CMD,输入命令: pip install django。如果因为TimeOut报错,你可以在C:\User\xxx\目录下(xxx为用户名称,比如Administrator)新增pip.ini。至于里面的内容,不是本文的重点,请自行搜索相关资料。

新建项目

在目录下,打开cmd,键入命令django-admin startproject django01并回车,即:

path > django-admin startproject django01

其中django01是新建项目名称,可以修改。除非特别说明,本文cmd命令中的path都指项目文件夹所在目录。

命令完成后,会自动生成名为django01的文件夹。打开django01文件夹,发现有如下目录:

项目目录
    django01
        manage.py
        django01
            settings.py
            urls.py
            view.py

当然,还有很多文件,但是这些现在不重要,就不列出来了。

验证效果

输入如下命令,以开启服务器:

path\django > python manage.py runserver

打开浏览器,输入http://127.0.0.1:8000/或http://localhost:8000/,可以看到一个django默认界面,标志性文本是加粗的文本“Debug=True”。
你也可以让他人看到你的网站:

path\django01 > python manage.py host:post

其中host是你的IPv4地址,post是使用的端口。

添加APP

输入如下命令,以添加APP:

path\django01 > python manage.py startapp app

其中app是APP名称,可以修改,比如python manage.py startapp index
在settings里面注册app。在settings中有这样一个列表:

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

在尾部添加app名称,注意末尾的逗号。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app',
]

打开path\django01\app\modals.py,添加代码。假设,我们要添加一个News类,有标题、正文、时间等属性。

from django.db import modals


class News(modals.Modal):
    title = modals.CharField(max_length=150)  # 对于CharField,max_length是必填项,表示允许的最大字符数。
    body = modal.TextField()
    timestamp = modal.DateTimeField()

保存即可。

迁移

接下来,迁移APP。这个很简单,在path\django01目录下打开cmd,键入命令python manage.py makemigrations,即可生成迁移文件。随后键入命令python manage.py migrate,完成迁移。

Part 2 | 后台管理

admin后台管理

admin可谓是django的一大亮点。使用admin可以方便,安全,美观地管理后台。
首先,你必须要拥有一个superuser(超级用户)。superuser拥有admin后台管理的所有权限,可以简单地理解为管理员。在path\django目录下执行命令python manage.py createsuperuser,随后会提示输入内容,分别为用户名(默认为administrator),电子邮件地址,密码。(注:密码输入必须符合提示的要求,在输入时可能不会显示你输入的字符,但是只需输入然后按回车即可)

创建超级用户后,运行服务器,此处举例用localhost:8000运行。
打开浏览器,进入网址http://localhost:8000/admin/,此时会自动跳转到http://localhost:8000/admin/login(如果你刚刚不久才登录,则不会跳转),输入超级用户的用户名和密码。如下图:
Python学习笔记 - 使用django的内置功能开发网站(详细)_第1张图片
登录成功后,将会进入到http://localhost:8000/admin/,这才是真正的admin首页。如下图所示(此处用户名使用的是LRC)
Python学习笔记 - 使用django的内置功能开发网站(详细)_第2张图片
默认有一个App(在django01内找不到,因为是内置的),网址是http://localhost:8000/admin/auth,名字叫“认证和授权。可以控制用户(http://localhost:8000/admin/auth/user)和组(http://localhost:8000/admin/auth/group)。
例如,在用户中,又可以添加(http://localhost:8000/admin/auth/user/ID/add),修改(http://localhost:8000/admin/auth/user/ID/change/),网址中ID指的是用户的ID。

####注册News类
打开http://localhost:8000/admin/后,我们并没有看到之前编写的News类。打开path\django01\app\admin.py,修改代码如下:

from django.contrib import admin
from app.modals import News  # from .modals import news


admin.site.register(News)

刷新网页,在界面上出现了APP这一栏app,在APP下面还有News模块,同样可以像用户和组一样增删改查。但是,如果你添加了一个News进去之后,你会发现http://localhost:8000/admin/app/news/里面有个News object (1),看起来很不友好,不好看。因此我们自定义管理界面。

自定义admin管理界面

打开path\django01\admin.py,原代码是:

from django.contrib import admin

我们添加一个类,继承自django.contrib.admin.ModalAdmin类,并注册。

from django.contrib import admin
from app.modals import News  # from .app.modals import News


class NewsAdmin(admin.ModalAdmin):
    list_display = ('pk', 'title', 'body', 'timestamp', )  # 管理器中需要显示的属性(pk是索引)
    ordering = 'timestamp'  # 按时间排序
    search_field = 'title'  # 搜索指定标题新闻的搜索框


admin.site.register(News, NewsAdmin)

刷新网页,管理界面更新成功。

Part 3 | 页面

制作一个页面

在app下创建文件夹templates,即path\django01\app\templates。在templates里面添加文件archive.html,编辑它。比如,写成:(注:仅是作为填充文件之用,因此不大美观,可以自行修改)

<html>
<head>
    <meta charset="UTF-8">
    <title>Website Titletitle>
head>
<body>
<div>
    <p>Welcome to the Website!<p>
    If you are administrator, please click <a herf="http://localhost:8000/admin/login/">herea>
    <p>There are so much code here, you can download the code or install an EXE APP.p>
    <form action="download.html">
        File Name: <input type="text" name="name">
        Your Key: <input type="password" name="passwoed">
        <input type="simplt" value="Download">
    form>
    Login <a herf=http://localhost:8000/admin/>this website a>to administrate the files.
    News in the Website System:
    {% for post in posts %}
        <h2>{
    { post.title }}h2>
        <p>{
    { post.timestamp }}p>
        <p>{
    { post.body }}<p>
    {% endfor %}
div>
body>
html>

打开path\django01\django01\settings.py,在templates首项的DIRS项中添加os.path.join(BASE_DIR, 'templates'),即:

templates = [
    {
     
        'BACKEND': 'django.templates.backends.django.DjangoTemplates', 
        'DIRS': [os.path.join(BASE_DIR, 'templates')], 
        'APP_DIRS': True, 
        'OPTIONS': {
     
            'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.contrib.messages.context_processors.messages',
            ],
        },
    }
]

接下来,创建视图函数。打开path\django01\app\views.py,编写代码如下:

from django.shortcuts import render
from app.modals import News  # from .modals import News


def archive(request):
    posts = News.objects.all()  # 获取数据库信息
    return render(request, 'archive.html', {
     'posts': posts})  # 发送POST请求

保存并关闭,打开path\django01\django01\urls.py,编辑代码如下:

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

urlpatterns = [
    url(r'^app/', include('app.urls')),  # 注意app.urls没有.py
    path(r'^admin/', admin.site.urls),
]

创建文件path\django01\app\urls.py,编辑代码如下:

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^archive$', views.archive),
]

这时启动服务器,浏览器访问网址http://localhost:8000/app/archive,即可看到你所有的News信息。你可在admin后台添加News。

Part 4 | admin界面设计

自定义标题

打开任何一个APP的admin.py,输入以下代码:

admin.site.site_header = 'Largest Title'  # 设置总标题,默认就是admin界面中的“Django管理”
admin.site.index_title = 'Website Administration Center'  # 设置admin标题,默认就是admin界面中的“站点管理”
admin.site.site_title = 'Website Tag'  # 就是浏览器里面,鼠标放在页面标签上不动所显示出来的那些字。比如首页的“django | 按时交付完美主义者的web框架”

Part 5 | 发布

让他人看到你的网站

这个简单,之前说过的,假设你的IPv4地址为123.456.7.8,你想使用8888端口开放服务器,就在path\django01目录下执行命令python manage.py runserver 123.456.7.8:8888,把前文中所有的localhost:8000改为123.456.7.8:8888,浏览器访问http://123.456.7.8:8888/admin即可登录管理后台,上文的archive也可以访问http://123.456.7.8:8888/app/archive

欲知后事如何,且听下回分解。
编者技术有限,如有不足敬请指教。
文末。

注:图片来自于网络:https://blog.csdn.net/LinRuiC/article/details/84871684?utm_source=app

你可能感兴趣的:(笔记)