美文网首页
Play DjangGo

Play DjangGo

作者: Noza_ea8f | 来源:发表于2020-02-06 12:28 被阅读0次

    框架怎么学?

    如果要学好框架,最好还是从基础入手;
    否则总是有不解的问题;
    事实上我们通过python提供的soket、wsgi两个库完全可以构造自己的web框架;
    当我们实现了自己的web框架之后,很容易就会明白别的框架为什么这么构造了;
    建议先学习哔站的这个视频:
    https://www.bilibili.com/video/av89018506?p=1
    然后再入手DjangGo;
    参考文档:
    https://docs.djangoproject.com/zh-hans/2.1/topics/

    用Pycharm创建一个Django工程

    创建完成后,目录结构暂时不要动;
    这个结构作为主项目;
    如果要运行程序在终端输入

    python manage.py runserver
    

    即可

    创建子项目

    python manage.py startapp test_1
    

    该代码创建了一个名为test_1的子项目;
    这相当于项目差分;
    不至于与主项目混淆;
    创建好后的目录结构


    image.png

    修改配置

    来到主项目下的settings.py文件下
    在INSTALLED_APPS里注册新创建的项目


    image.png

    创建模板

    • 在子目录下创建模板目录


      image.png
    • 创建模板文件
    <h1>hello world</h1>
    

    创建视图函数

    • 在子目录下的views.py中写入
    from django.shortcuts import render
    
    
    # Create your views here.
    def index(request):
        return render(request, 'index.html', {})
    

    {}是用于传参的,目前为空

    注册url

    • 在test_1项目下新建一个urls.py文件
      写入代码
    from django.urls import path
    from . import views
    urlpatterns = [
        path('', views.index, name='index'),
    ]
    

    注意“.”指的是当前目录
    这里我们导入了views.py下的index函数;
    指定name="index",这个什么意思?
    它不是路由路径,因为输入时会报错的,见下图,


    image.png

    因为JIANJIA2模板可以通过路由对应的函数获取参数,如果路由名字改变,则所有模板中的变量都需要修改,为了避免麻烦,所以从这里起一个固定的名字,这样路由怎么办,都不会影响到模板了,当然这么说很抽象,以后遇到时再解决;

    • 打开主项目的urls.py
      导入include
    from django.urls import path, include
    
    • 注册test_1项目的url
    from django.contrib import admin
    from django.urls import path, include
    
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('', include('test_1.urls')),
    ]
    

    打开网页


    image.png

    创建通用模板

    • 在子项目下的templates下创建base.html
      写入
    <!doctype html>
    <html lang="en">
    <head>
        <!-- Required meta tags -->
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    
        <!-- Bootstrap CSS -->
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.4.1/dist/css/bootstrap.min.css"
              integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
    
        <title>Hello, world!</title>
    </head>
    <body>
    {% block content %}
    {% endblock %}
    
    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script src="https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.slim.min.js"
            integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n"
            crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"
            integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
            crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.4.1/dist/js/bootstrap.min.js"
            integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6"
            crossorigin="anonymous"></script>
    </body>
    </html>
    

    {% block content %}
    {% endblock %}
    是Jia2代码块

    • 在index.html中引用base.html模板
    {% extends 'base.html' %}
    
    {% block content %}
    <h1>哈喽,世界</h1>
    {% endblock %}
    
    image.png

    修改base.html样式

    image.png

    相关文章

      网友评论

          本文标题:Play DjangGo

          本文链接:https://www.haomeiwen.com/subject/vqpyxhtx.html