学习使用Django2 前台页面展示
Django 2.1 python 3.7
创建一个虚拟环境
python -m venv 虚拟环境名称
进入虚拟环境
下载django
pip install django==2.1
创建项目: django-admin startproject 项目名称 . -->创建项目 有个点 创建应用:
python manage.py startapp 创建应用
一个干净的Django 框架,我们需要打开settings.py 进行设置
第一步: 创建数据库 : MyDB mysql 有关命令请看 这篇文章: https://www.cnblogs.com/whatarey/p/11396616.html
第二步: Django应用中的settings.py后台设置中文,数据库修改为mysql配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'MyDB', #数据库名字,
'USER': 'root', #数据库登录用户名
'PASSWORD': '', #数据库登录密码
'HOST': 'localhost', #数据库所在主机
'PORT': '', #数据库端口
}
} LANGUAGE_CODE = 'zh-hans'
第三步:创建模型:
class UserInfo(models.Model):
UserName = models.CharField(max_length=20)#用户名
create_date = models.DateField()#创建日期
pwd=models.CharField(max_length=20)#密码
第四步,后台admin.py 注册
from .models import UserInfo admin.site.register(UserInfo)
第五步 执行文件迁移
python manage.py makemigrations
python manage.py migrate
这时候,一定会出现这一个错误:
在项目中的 init.py 中加入:
import pymysql
pymysql.install_as_MySQLdb()
在运行就可以了
运行:
进入后台,突然发现没有创建后台管理员账号....
创建管理员账号:
python manage.py createsuperuser
这个密码太坑了。。。。
第六步:往项目的views.py 中添加
from django.shortcuts import render
from django.http import HttpResponse,Http404
from django.template import loader
#这里是视图 def index(request):
'''写法1'''
# template=loader.get_template('Web_Templates/index.html')
# # 2.定义上下文
# context={"title":"Index","heatde_title":"Index","BodyHtml":"这是我的主页内容<a href=''>hehe</a>"} # 这个上下文是一个字典,它将模板内的变量映射为 Python 对象。
# return HttpResponse(template.render(context,request)) '''写法2'''
data={
"title":"Index",
"heatde_title":"Index",
"BodyHtml":"中间body",
"id":[1,2,3,4,5]
}
context = data
return render(request, 'Web_Templates/index.html', context)
# 注意到,我们不再需要导入 loader 和 HttpResponse 。
# 不过如果你还有其他函数(比如说 detail, results, 和 vote )需要用到它的话,就需要保持 HttpResponse 的导入。 def getHtml(request,id):
list=[0,1,3,4]
try:
question =list[id]
except Exception as e:
raise Http404("Question does not exist")
return render(request, 'Web_Templates/Show.html', {'question': question})
第七步:项目中添加urls.py
from django.urls import path from . import views app_name="Web"
urlpatterns=[
#url(r'^$'
path("",views.index,name="Index"),
path("Show/<int:id>/",views.getHtml,name="Show"),
# '''
# # # ex: /polls/
# # path('', views.index, name='index'),
# # # ex: /polls/5/
# # path('<int:question_id>/', views.detail, name='detail'),
# # # ex: /polls/5/results/
# # path('<int:question_id>/results/', views.results, name='results'),
# # # ex: /polls/5/vote/
# # path('<int:question_id>/vote/', views.vote, name='vote'),
# '''
]
第八步,应用的urls.py 注册
第九步:创建模板 我是在 MyWeb\
第十步,把模板路径添加到项目的settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'Templates')], # 模板'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',
],
},
},
]
index.html
1 <html>
<head>
<title>{{title}}</title>
</head>
<body>
<h1>{{heatde_title}}</h1>
<div>
{{BodyHtml}} {% for a_link_id in id %} <li><a href="{% url 'Web:Show' a_link_id %}" >点我有惊喜,我的编号是:{{a_link_id}}</a></li>
{% endfor %}
</div>
</body>
</html>
show.html
1 <html>
<head>
<title>111111</title>
</head>
<body>
<h1>{{question}}</h1>
<div>
{{question}} </div>
</body>
</html>
可看官网:https://docs.djangoproject.com/zh-hans/2.1/intro/tutorial03/
ok
当id 超过了list的最大值,就会404
进入虚拟环境,切换到项目根目录下,使用pip工具的freeze参数。
(venv) D:\work\2019\for_test\mysite>pip freeze > ./requirements.txt
将会把你虚拟环境下面的所有包都写入这个
requirements.txt
他人如果拷贝了我们的代码,要安装第三方库依赖的话,只需要:
pip install -r requirements.txt
上传到git
对于settings.py文件有个问题,如果没有这个文件是无法运行Django项目的,但是settings中又可能包含很多关键的不可泄露的部分,比如SECRET_KEY:
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'b(&6i_$g2%8vh)ruu$)a9pkw+s-e&qj_e_#=@gnbo^48#gp_8a'还有数据库的IP/Port、用户名和密码,邮件发送端的用户名和密码,这些都是绝对不能泄露的。
那怎么办呢?简单!复制settings文件,并重命名为settings.example.py文件,放在同一目录里,把敏感信息、密码等修改或删除。使用者看到这个文件名,自然会明白它的作用。
喜欢就点个赞!!!文章写得真不容易。
学习使用Django2 前台页面展示的更多相关文章
- springboot+thymeleaf中前台页面展示中、将不同的数字替换成不同的字符串。使用条件运算符
主要用到的知识就是thyme leaf中的条件运算符 表达式:(condition)?:then:else 当条件condition成立时返回then.否则返回else 具体代码:<td th: ...
- SpringBoot集成websocket发送后台日志到前台页面
业务需求 后台为一个采集系统,需要将采集过程中产生的日志实时发送到前台页面展示,以便了解采集过程. 技能点 SpringBoot 2.x websocket logback thymeleaf Rab ...
- app——分享wap站,数据处理页面展示
无意中接到了一个小的工作任务:配合手机app端的分享功能做一个wap站,简言之:将手机app端分享的文章id传过来,利用此id再进行一系列的操作,由于文章分为纯文本,图文以及图集的三种类型的文章,因此 ...
- 使用spring webflow,在前台页面中如何显示后端返回的错误信息
刚刚接触spring webflow,相关的资料并不是很多,并且大都是那种入门的 .xml文件的配置. 用到的CAS 最新的4.0版本用的就是web-flow流,前台页面使用的是表单提交.于是我就碰到 ...
- 【原】老生常谈-从输入url到页面展示到底发生了什么
刚开始写这篇文章还是挺纠结的,因为网上搜索“从输入url到页面展示到底发生了什么”,你可以搜到一大堆的资料.而且面试这道题基本是必考题,二月份面试的时候,虽然知道这个过程发生了什么,不过当面试官一步步 ...
- Phpcms 前台页面实现分页
phpcms开发就是模仿里面原有的方法进行扩展,前台要实现分页,就去找后台页面的分页实现. 如后台 扩展->后台操作日志,就有分页展示. 1.先去添加自己的分页方法(千万不要在原来的方法上修改, ...
- 我的第一个python web开发框架(18)——前台页面与接口整合
由于我们前后台系统没有分开,所以前台页面调用接口时,可以直接使用后台管理系统已经完成的接口,不过后台管理系统接口的访问加上了登录验证,所以需要将前台要用到的接口进行处理,让它们设置到白名单当中 我们打 ...
- 图书管理系统【JavaWeb:部署开发环境、解决分类、图书、前台页面模块】
前言 巩固Servlet+JSP开发模式,做一个比较完整的小项目. 成果图 该项目包含了两个部分,前台和后台. 前台用于显示 后台用于管理 该项目可分为5个模块来组成:分类模块,用户模块,图书模块,购 ...
- springmvc 项目完整示例08 前台页面以及知识点总结
至此已经基本测试成功了,我们稍作完善,让它成为一个更加完整的项目 我们现在重新规划下逻辑 两个页面 一个登录页面 一个欢迎页面 登陆页面输入账号密码,登陆成功的话,跳转登陆成功 欢迎页面 并且,更新用 ...
随机推荐
- Swift4.0复习闭包
1.闭包的定义和调用: _ = { (param1: Int, param2: Float, param3: Void) -> return_type in // 闭包执行代码 /* ... * ...
- curl --resolve 查看证书情况
通过curl 解析证书 [root@harbor ~]# curl --resolve 'www.abc.com:127.0.0.1' https://www.abc.com/ -vvv * Cou ...
- Java多线程概念及优缺点,多线程的地位|乐字节
大家好,乐字节小乐有来咯,上次说完了Java网络编程探究|乐字节,这次我们来看看线程相关的吧. Java线程主要讲述的内容有: 1.线程概念 多线程,说白了就是多条执行路径,原来是一条路径,就主路径( ...
- 修改Linux服务器中的MySql密码
1.可以直接在数据库中修改,因为知道root密码,所以直接登录 mysql -uroot -p 2.查看一下数据库,修改root密码需要使用如下图所示的mysql数据库 3.通过use mysql指明 ...
- SecureCRT系列:生成公私钥
SecureCRT下载地址:http://www.portablesoft.org/securecrt-securefx-legacy-versions/1.打开我们的SecureCRT客户端,点击t ...
- python基础学习(九)
19.解包 # 解包 unpacking user1 = ["张三", 21, "1999.1.1"] # tuple 类型 user2 = ("李四 ...
- Zuul【工作原理】
zuul的核心逻辑都是由一系列filter过滤器链实现的,但是filter的类型不同,执行的时机也不同,效果自然也不一样,主要特点如下: filter的类型:filter的类型,决定了它在整个filt ...
- Python09之range函数(BIF内置函数)
具体语法: range(起始值,结束值,步进值) range() 其属于内置函数,不需要导入其他模块即可使用,直接在Python的IDLE直接可以使用. list(range(0,10)) [0, 1 ...
- zblog安装环境介绍?zblog安装需要什么环境
最近在群里看到很的多人有在问:“安装zblog需要什么环境?”,其实这个问题在zblog官网的程序下载页面有说明,但是不太详细,那么本文的目的就是来给大家介绍下zblog安装环境详细说明. zblog ...
- PAT(B) 1051 复数乘法(Java)
题目链接:1051 复数乘法 (15 point(s)) 参考博客:1051 复数乘法(PAT 乙级 C++实现)-guangjinzheng 题目描述 复数可以写成 (A+Bi) 的常规形式,其中 ...