天天看点

Django新建第一个项目Django

Django

Django是重量级的 web应用框架,用Python语言开发

​ Python和Django 是快速开发、设计、部署网站的最佳组合

MVC模型:

​ model–模型 编写程序应有的功能,负责业务对象与数据库的映射

​ view–视图 图形界面,负责与用户的交互

​ controller–控制器 负责转发请求,对请求进行处理

MTV模型:

​ model–模型 编写程序应有的功能,负责业务对象与数据库的映射

​ template-模板 负责把页面html展示给用户

​ view-视图 负责业务逻辑,并在合适的时候调用module和template

还需要一个URL分发器,将一个一个URL的页面请求分发给不同的view处理,view再调用相应的model和template

用户通过浏览器发起一个request请求,请求会去访问视图,视图去模块里取数据数据库是与模块交互的,返回给视图,视图把要展示的数据返回给模板,模板就是页面

Django安装

菜鸟教程https://www.runoob.com/django/django-install.html

检查Django是否安装成功,命令行进入Python

xxxx$python
>>import django
>>django.get_version()
           

Django的命令行:

创建一个项目-HelloWorld

Django-admin.py startproject HelloWorld
           

Pycharm新建一个Django项目,然后增加自己的自建应用(application), python manage.py startapp 应用名,目录为:

Django新建第一个项目Django

项目目录

​ manage.py 一个实用的命令执行工具,让你以各种方式与Django项目进行交互

HelloWorld 下会有一个同名的子目录,子目录HelloWorld下:

​ settings --Django的项目配置

​ urls --Django项目的URL声明,一份由Django驱动的网站目录

​ wsgi --一个WSGI兼容的web服务器入口,以便运行你的项目

启动服务器

python manage.py runserver

python manage.py runserver 0.0.0.0:8000
           

0.0.0.0 让其它电脑可连接到开发服务器,8000 为端口号。如果不说明,那么端口号默认为 8000。

在浏览器输入你服务器的 ip(这里我们输入本机 IP 地址: 127.0.0.1:8000) 及端口号

视图和URL配置

有自建应用,必须先把自建应用的名字加到settings的install_APP里面–pycharm创建的会自动加

修改settings
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'user',  #自建的
    'test_tools', #自建的
    'case' #自建的 
]

#下面修改一些普通配置
LANGUAGE_CODE = 'zh-Hans' #修改中文编码

TIME_ZONE = 'Asia/Shanghai' #修改时区

USE_I18N = True

USE_L10N = True

USE_TZ = False  #这里也改一下,要不然数据库用的还是标准时区
           
在自建应用zyy的view里配置,配置自己的view
from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.
def user_info(request):
    s = '你好'
    return HttpResponse(s)  #返回的是字符串的用它

def welcome(request):
    username = '易烊千玺'
    return render(request,'welcome.html',{'username':username})
    #render就是返回一个网页
    #因为在settings里面配置了dir 所以能找到这个路径-welcome.html

def index(request):
    return render(request,'index.html')
           

其中,templates下面的 DIR,是指的是Django寻找HTML的路径

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        # 'DIRS': [BASE_DIR , '/templates'], #Django自动生成,不好使
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        #指的是Django寻找html模板的目录
    },
]
           
接着绑定URL与视图函数。打开urls.py
from django.contrib import admin
from django.urls import path
from zyy import views  #导入自己的view

urlpatterns = [
    path('admin/', admin.site.urls),
    path('hello_world/', views.hello_world), #添加view,前面的hello_world是链接拼接的路径,这个页面应为--http://127.0.0.1:8000/hello_world
    path('', views.index),  #访问路径不写,代表访问的根目录就是它
]
           
path函数

Django path() 可以接收四个参数,分别为2个必选参数,两个可选参数

  • route: 字符串,表示 URL 规则,与之匹配的 URL 会执行对应的第二个参数 view。
  • view: 用于执行与正则表达式匹配的 URL 请求。
  • kwargs: 视图使用的字典类型的参数。
  • name: 用来反向获取 URL。

Static

static 是在Django 具体APP下建立的static目录,用来存放静态资源

在settings里面设置静态资源路径!!注意是一个元祖,要加,

STATIC_URL = '/static/' #原有的

#自己设置的
STATICFILES_DIRS = (
    os.path.join(BASE_DIR,'static'),
)
           
运行Django服务器报错 -TypeError: unsupported operand type(s) for /: ‘str‘ and ‘str‘,分析与解决

​ 错误类型: TypeError: unsupported operand type(s) for /: ‘str’ and ‘str’

​ 出错代码: 如上图绿框所示,在settings.py中的’DIRS’: [BASE_DIR / ‘templates’]

错误分析: 这个提示大概是说:“类型错误:不支持操作类型为字符串和字符串”,直接把两个字符串(BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(file)))在前面定以为基础路径,也就是整个项目的路径)在列表中连接起来是不合适的,这里系统将“/”理解为了除号,系统理解为“字符串/字符串”。实际上这里想表达的意思将BASE_DIR 和’templates’连在一起形成一个完整路径,而“/”是路径分隔符。

修改方法: ‘DIRS’: [str.format(BASE_DIR, ‘/templates’)],再次运行就成功了。

实际上,我所使用的是:‘DIRS’: [os.path.join(BASE_DIR, ‘templates’)], # 指的是Django寻找html模板的目录

这个bug的 原文链接:https://blog.csdn.net/u010021014/article/details/110449782