Django 开发网站初学者教程
创建第一个项目
django-admin.py startproject 项目名
运行第一个项目
python manage.py runserver 0.0.0.0:8000 #说明除了本地其他电脑也能通过本机IP地址访问
python manage.py runserver localhost:8000 #说明对外是封闭的,只有本机能访问,其他机子访问不了
第一次运行会报这样的错:
django.core.exceptions.DisallowedHost: Invalid HTTP_HOST header: '10.122.209.150:8000'. You may need to add '10.122.209.150' to ALLOWED_HOSTS
那是因为还没有指定那些IP地址对应的机子能访问
注意:只能指定那些能访问,不能指定那些不能访问。也就是说没在能访问列表里的就不能访问
在项目的目录内有一个settings.py 文件, 里面有这样一行代码:
ALLOWED_HOST = [] # 只有在这个列表里的IP能访问
把它改成:
ALLOWED_HOST = ["*"] # "*"说明允许所有IP地址的访问
自定义第一个视图和url配置
在settings.py文件所在目录新建view.py,其内容如下:
from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello django.")
找到urls.py文件添加以下内容,记住添加就ok,原有内容不用管
from . import view
from django.conf.urls import url
urlpatterns = [
url(r"^$",view.hello)
]
使用模板提高效率 模板-英文名:template
模板是一个文本,主要作用是 分离 文档的 表现形式 和 内容
1.先在manage.py所在的目录新建目录templates
2.再在templates目录里新建 (目录名).html 文件
<ul>
{%for x in list reversed%}
<h1>
{{x}}
</h1><br>
{%endfor%}
</ul>
3.修改settings.py文件里一下的内容(注意:其他内容不用管,不能改动):
'DIRS': [BASE_DIR + "/templates"],
4.修改view.py内容:
from django.shortcuts import render
def hello(request):
context= {}
context["list"] = [1,2,3,45,6]
return render(request,'template1.html',context)
当你再次通过浏览器访问该网页时会报一下错误:
UnicodeDecodeError: 'gbk' codec can't decode byte 0xa6 in position 9737: illegal multibyte sequence
那是因为初次安装使用时,django的很多东西的都是默认值,而这里就是django默认以gbk模式打不开你以utf-8写的/templates/template.html文件。
解决办法:
打开 C:\Users\XXX\AppData\Local\Programs\Python\Python%\Lib\site-packages\django\views\debug.py
转到第331行代码:
with Path(CURRENT_DIR, 'templates', 'technical_500.html').open() as fh:
改成这样:
with Path(CURRENT_DIR, 'templates', 'technical_500.html').open(encoding="utf-8") as fh:
刷新浏览器页面:
模板继承
{% extends "base.html" %} #用这句话来继承制定模板
父类模板可重载部分
{% block block-name %}
父类的原内容
{% endblock block-name %}
子类模板的重写父类block的方法
{% extends "base.html" %} #用这句话来继承制定模板
{% block block-name %}
重载内容
{% endblock block-name %}
注意:如果 无论是在那个模板 变量名与block-name不能一样,否则两个都失效
Django 模型 ---- 其实就是个数据库模型
Django规定,如果要使用模型必须要创建一个app
1 . 创建app
python manager.py startapp APP名字
2.定义模型
修改 APP名字/models.py的内容:
from django.db import models
# Create your models here.
class Test(models.Model):
name = models.CharField(max_length = 20) # 新建字段 name 其数据类型为varchar(20)
3.注册app
修改settings.py的内容:
INSTALLED_APPS = [
.....,
"APP名字" # 添加这一项就行其他的不用改
]
4.创建django自带的表的表结构(建立数据库表结构,并写入更改)
python manage.py migrate
5.让Django知道我们在我们的模型上做了一些变更
python manage.py makemigrations APP名字
6.创建指定app的模型的表结构(建立数据库表结构,并写入更改)
python manage.py migrate APP名字
就这样模型建好了。
个人感言:
一个Django项目可以有多个app
多个app可共享同一个模板,但不能共享同一个模型
这就说明数据的重要性,数据面前模板就根本不值钱