网站后面为啥加端口_采坑实录|老板让我一周上线一个网站(二)

在我的上一篇博客写了些在建站的过程中,阿里云服务器的选择,以及服务器环境配置时遇到的坑。 本篇打算分享一下在使用Django后的感受,以及在搭建网站后台管理员界面(admin.py)时遇到的问题。

1 Django使用后感受

使用之后的第一个感觉就是Django的组成很简单。

  • 首先,其规定了html、css、js等文件的存放位置(template、static等);
  • 其次,其规定了后台响应程序(views)、数据库连接(models)、管理员界面(admin)以及配置设置(setting)等coding位置;
  • 最后,从生成应用文件(app),以我这里的app名称为pageContent为例:
python manage.py startapp pageContent

到运行网站

python manage.py runserver

以及自动生成数据库models,迁移数据库信息(migrate)等都是都是使用manage.py进行的,有一拳超人走天下的感觉。

Terminal中直接输入以下可以了解更多。

python manage.py

第二个是能感受到Django结构的严格限制。Django的Project文件命名有严格的要求,如“template”就是用来存放html页面的、“static”(静态)指的是可以被静态文件的形式访问,可以直接通过url中加入‘/static/+文件名’直接访问,我导的任务之一是下载一个文件,我这边实现起来就是先把文件放到static下的doc文件夹中(/static/doc/xxx.doc)加上链接进行访问并下载。放到其他非static文件夹就不行了。总之,像“template”、“static”的文件名都不要改名使用。

人类制定了规则,规则又回来反制人类,妙啊

2 收获到的一篮子知识点

2.1 INSTALLED_APPS加入app名称

添加app的名称在setting.py文件中的INSTALLED_APPS配置列表里:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'pageContent',  # 我的app名称 要加入进来
]

我这里的app名称是'pageContent',如果这里不加入,后面自动生成数据库models会遇到bug。好习惯随手养成。

2.2 html中涉及到表单提交需要添加“{%csrf_token%}”

添加这个标签目的是防止csrf(跨站请求伪造),即防止黑客盗用我网站上的cookies内容。

在渲染模板的时候,Django可以把这句{%csrf_token%}替换成一个元素,提交表单内容的时候完成加密。

添加的位置为form标签下数第一行的位置,样例如下 :

{%csrf_token%}

2.3 Django自带管理员界面的生成

生成管理员界面需要预先把数据库相关内容配置好,下面是我配置的过程:

# 刷新数据库的信息
python manage.py makemigrations
python manage.py migrate
python manage.py inspectdb > pageContent/models.py
 
# 创建管理员账号
python manage.py createsuperuser

然后需要在admin.py中进行编程,开启管理员的界面。

2.4 Django管理员界面对后台数据库中数据的管理(增删改查以外等花里古哨的功能)

from django.contrib import admin  # 引入管理员界面继承的包 
from django.utils.html import format_html
from pageContent.models import Userapp  # 存放我后台的数据库表名 Userapp
 
# 管理员界面入口
 
"""
MessageAdmin 
"""
class MessageAdmin(admin.ModelAdmin):
    """
    希望能在管理员界面直接看到我的Userapp表中的这三列内容,其中id、date是列名,和我数据库中表的列名需相同。View是我生成的列名,详细见View内置函数的解释。
    """
    list_display = ('id','date', 'View',) 
 
    search_fields = ('id','date',) # 界面内增加检索框,检索的字段范围为 id date,需要什么加什么
    list_per_page = 20  # 一页可以展示的数量,此处20
    ordering = ('id',)  # 排序的依据,此处升序排列,加一个负号,'-id'改为降序排列
    list_filter = ('date',)  # 增加一个侧边栏,进行时间范围的筛选 
    date_hierarchy = 'date'  # 增加一行可以用于选择具体日期
 
    """   
     可以在页面中加入html标签,此处的功能:
     将数据库中的'filepath'列中的pdf文件位置信息 作为超链接a标签渲染到页面中
     使管理员通过点击'查看'能直接跳转文件预览页面(或者跳出文件下载链接)
    """
    def View(self, obj):
        return format_html("查看", obj.filepath)
    View.allow_tags = True  # 加入
 
 
admin.site.site_header = '我的管理员界面'  # 修改登陆页面登陆框上的名字
admin.site.site_title = '我的管理员界面'  # 修改页面标题
admin.site.register(Userapp, MessageAdmin)  # 上面的功能加入到Userapp表中

效果如图所示:

网站后面为啥加端口_采坑实录|老板让我一周上线一个网站(二)_第1张图片
图 管理员界面预览图

2.5 运行Django后台不止runserver

我们使用python manage.py runserver一般会开启8000端口,这样我们通过访问http://localhost:8000就可以访问了。

但是我们平时访问的网站很少有带':8000'的情况,这是为什么呢?

因为他们开启了http协议的默认端口,即80端口。

我们在布置我们的网站的时候想使用默认端口只需要将run语句修改如下:

python manage.py runserver 0.0.0.0:80

在浏览器中输入'localhost'就可以访问了。

2.6 DEBUG=False后admin界面格式错误或加载不出

Django自带debug功能(setting.py中),可以不用我们自己写404等页面,在出错时跳转至默认页面。

但是由于我们将DEBUG改成了False,会导致Admin界面发生格式加载错误的现象,怎么修改呢?

需要在run的时候再加一点内容:

python manage.py runserver 0.0.0.0:80 --insecure

加入'--insecure' 即可,刷新,熟悉的页面回来了。

如果你是在服务器上运行的,那么就可以直接在其他电脑上浏览器访问服务器的ip号来获取页面了。

不过没有经过备案可能一两个小时就会被封掉,试试就好,安心等备案吧。

小结

本文没有涉及到有关配置数据库model使用部分的内容,可以很好的搜到,就不赘述了。

Django自带的admin界面还可以pip一些suit来美化,(如:django-suit·PyPI),当然大家也可以自己探索一番。

道路千万条,实现网站的方法很多。这一周我用Django搭建了一个有管理员后台的网站,收益颇丰。我又回想起四年前(我大二上学期)的那个夜晚,我用JSP在赶一个后台,厚重的Java框架,复杂的xml的配置,给我和我的小伙伴留下了挥之不去的心理阴影。直到现在,我还记得我那时的慌张与无措。好在,现在开源的框架越来越轻量,调用越来越简便,但是,这种代码量解放的同时,又有多少人被奴役进来了呢?

总之,管理员界面就这样缝缝补补的建起来了,整个网站的搭建也算是告一段落。

感谢老板这次的偏爱,告辞。

————————————————

原文链接:https://blog.csdn.net/qq_33293040/article/details/103526284

你可能感兴趣的:(网站后面为啥加端口,网站手工添加一行数据)