django是第三方模块,因此需要下载。这里介绍2种下载方式。
打开PyCharm,在菜单栏中找到: File > Settings
,进入设置界面,在设置中寻找Settings > Project
,点击设置界面右边的加号,在Search
中搜索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:
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
,完成迁移。
admin可谓是django的一大亮点。使用admin可以方便,安全,美观地管理后台。
首先,你必须要拥有一个superuser(超级用户)。superuser拥有admin后台管理的所有权限,可以简单地理解为管理员。在path\django
目录下执行命令python manage.py createsuperuser
,随后会提示输入内容,分别为用户名(默认为administrator),电子邮件地址,密码。(注:密码输入必须符合提示的要求,在输入时可能不会显示你输入的字符,但是只需输入然后按回车即可)
创建超级用户后,运行服务器,此处举例用localhost:8000运行。
打开浏览器,进入网址http://localhost:8000/admin/
,此时会自动跳转到http://localhost:8000/admin/login
(如果你刚刚不久才登录,则不会跳转),输入超级用户的用户名和密码。如下图:
登录成功后,将会进入到http://localhost:8000/admin/
,这才是真正的admin首页。如下图所示(此处用户名使用的是LRC)
默认有一个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)
,看起来很不友好,不好看。因此我们自定义管理界面。
打开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)
刷新网页,管理界面更新成功。
在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。
打开任何一个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框架”
这个简单,之前说过的,假设你的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