如何使用Python的Django框架创建自己的网站
如何使用Python的Django框架创建自己的网站
Django建站主要分四步:1、创建Django项目,2、将网页模板移植到Django项目中,3、数据交互,4、数据库
1创建Django项目
本人使用的是pycharm编辑器,打开pycharm,如下图点击左下角红框位置,选择terminal,然后在terminal窗口输入
django-admin.py startproject myproject
然后再输入
python manage.py startapp myapp
上面的myproject和myapp都是自己定义的工程名和APP名
至此,Django项目已经建立完毕。
2将网页模板移植到Django项目中
1、在myapp文件下新建两个文件夹,static和templates,static文件夹放置网页模板的css、js以及其他文件夹,templates文件夹只放.html的文件
2、对Django项目的四个文件进行修改,因为将模板移植到Django项目中,需要在模板文件中进行一些格式修改。
setting.py
在里面添加自己的APP,添加模板的文件夹路径
'DIRS': [os.path.join(BASE_DIR,'templates')],
url.py
新加以下语句
from django.urls import path
from django.conf import settings
from django.conf.urls.static import static
from myapp import views
然后再添加网页的路径
path('login', views.login),

views.py
定义一个响应函数,函数名必须和网页的xx.html前缀名相同
def index(request):
return render(request, 'index.html',
xx.html
在下添加下面语句,表示下面的模板由Django接管
{% load static %}
以下为Django下的一些语句格式例子
{% for line in data1 %}
{% if line.user == data2.user %}
{% if line.psw == data2.psw %}
{% endif %}
{% endif %}
{% endfor %}
可以看出在路径和for循环if判断语句中都要用{% %}。
3数据交互
views.py
首先定义一个list,如user_list[ ],用于存放数据
数据的方法为POST,所以在响应函数中加一个判断语句
def login(request):
if request.method == "POST":
username = request.POST.get("username", None)//将用户输入的数据存到变量中
password = request.POST.get("password", None)
user_list = {"user": username, "psw": password}
return render(request, 'login.html', {"data1": user_list})//将数据送回到页面
xx.html无锡看妇科医院哪家好 http://mobile.wxbhnkyy39.com/
数据返回到页面后,通过for循环读取
{% for line in data1 %}
line.user = data1.user
line.psw = data1.psw
{% endfor %}
4数据库的操作
需要更改三个文件
setting.py
Django有自己自带的数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), #Django自带的数据库
}
}
models.py
先创建models
class UserInfo(models.Model):
user = models.CharField(max_length=32)
psw = models.CharField(max_length=32)
只要动了models.py,就要在terminal中输入以下两个语句
python manage.py makemigrations
python manage.py migrate
views.py
新加下面语句
from myapp import models
给数据库写入数据
models.UserInfo.objects.create(user="zhoupeng", psw="123456")
读取数据库数据
user_list = models.UserInfo.objects.all()
可以直接在网页中读数据库进行操作
在admin.py文件中加入以下语句
from myapp.models import UserInfo
admin.site.register(UserInfo)
然后创建超级用户
在terminal中输入
python manage.py createsuperuser
即可在http:/ /admin中对数据库进行操作
至此,一个完整的Django项目就完成了。
调式过程的心得
1、调试过程出现任何bug首先看一下自己是不是有那里拼写错误
2、有的时候调试很久,什么都没有错,但网页就是刷新不出来,但是过一段时间却自动好了,有可能是端口的问题,换个端口试一下
3、中的login为点击submit时要跳转的页面,写错会出现page not found,对于method,有数据是为post,无数据是为get
4、在url.py中 path(’’, views.login)和path(‘index’, views.index)的区别,前者的url为http:/…/后者为http:/…/index
5、出现错误为“Local variable xxx referenced before assignment”,就是局部变量和全局变量的问题,在响应函数中加global xxx,或者直接将变量定义在函数里
如何使用Python的Django框架创建自己的网站的更多相关文章
- Python的Django框架中的Context使用
Python的Django框架中的Context使用 近期整理些Python方面的知识,一旦你创建一个 Template 对象,你能够用 context 来传递数据给它. 一个context是一系列变 ...
- 将Python的Django框架与认证系统整合的方法
将Python的Django框架与认证系统整合的方法 这篇文章主要介绍了将Python的Django框架与认证系统整合的方法,包括指定认证后台和编写认证后台等内容,需要的朋友可以参考下 将Django ...
- Python的Django框架中forms表单类的使用方法详解
用户表单是Web端的一项基本功能,大而全的Django框架中自然带有现成的基础form对象,本文就Python的Django框架中forms表单类的使用方法详解. Form表单的功能 自动生成HTML ...
- Python的Django框架中的Cookie相关处理
Python的Django框架中的Cookie相关处理 浏览器的开发人员在非常早的时候就已经意识到. HTTP's 的无状态会对Web开发人员带来非常大的问题,于是(cookies)应运而生. coo ...
- Python的Django框架中的URL配置与松耦合
Python的Django框架中的URL配置与松耦合 用 python 处理一个文本时,想要删除其中中某一行,常规的思路是先把文件读入内存,在内存中修改后再写入源文件. 但如果要处理一个很大的文本,比 ...
- Python之Django框架
1.Django简介 Python下有多款不同的 Web 框架,Django是最有代表性的一种.许多成功的网站和APP都基于Django. Django是一个开源的Web应用框架,由Python写成. ...
- Django框架学习——python模拟Django框架(转载)
原贴来源 http://wiki.woodpecker.org.cn/moin/ObpLovelyPython/AbtWebModules python实现web服务器 web开发首先要有web服务器 ...
- python 之 Django框架(Django框架简介、视图装饰器、request对象、Response对象)
12.33 Django框架简介: MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器( ...
- python 之 Django框架(服务器程序和应用程序、基础必备三件套及相关配置)
第十二章 Django框架 12.1 服务器程序和应用程序 服务器程序负责对socket服务器进行封装,并在请求到来时,对请求的各种数据进行整理.应用程序则负责具体的逻辑处理.为了方便应用程序的开发, ...
随机推荐
- 11.面试思路&画图让抽象具体化(2)
面试思路 题一:[二叉树的镜像] 操作给定的二叉树,将其变换为源二叉树的镜像. 分析:使用递归=>边界条件:节点为空,交换当前节点的左右节点. /** public class TreeNode ...
- python--协程知识初识
线程和进程的操作是由程序触发系统接口,最后的执行者是系统:协程的操作则是程序员. 协程存在的意义:对于多线程应用,CPU通过切片的方式来切换线程间的执行,线程切换时需要耗时(保存状态,下次继续).协程 ...
- [RN] React Native 使用 阿里 ant-design
React Native 使用 阿里 ant-design 实例效果如图: 一.安装 npm install antd-mobile-rn --save npm install babel-plugi ...
- [RN] React Native 实现图片预览
[RN] React Native 实现图片预览 效果预览: 代码如下: 'use strict'; import React, {Component} from 'react'; import {I ...
- 从零和使用mxnet实现dropout
需求: 从零和使用mxnet实现dropout 数据集: 使用load_digits()手写数字数据集 要求: 使用1个掩藏层n_hidden1 = 36,激活函数为relu,损失函数为softmax ...
- vue+element 表单验证
效果图 <template> <div class="formValidator"> <div v-for="(item,index) in ...
- Unittest 类方法
import unittest,time from selenium import webdriver class TestClass(unittest.TestCase): @classmethod ...
- of_property_read_string_index(转)
https://biscuitos.github.io/blog/DTS-of_property_read_string_index/ 源码分析 of_property_read_string_ind ...
- ping-pong buffer
1 什么是pingpong? pingpong是一种数据缓存的手段,通过pingpong操作可以提高数据传输的效率. 2 什么时候需要pingpong? 在两个模块间交换数据时,上一级处理的结果不能马 ...
- Linux系统查看是32位还是64位
uname -a 如果是64位机器,会输出x86_64