其他分享
首页 > 其他分享> > 第18章——从Django入手

第18章——从Django入手

作者:互联网

建立项目

  建立虚拟环境 python -m venv ll_env

  激活虚拟环境 ll_env/Scripts/activate

    (停止 deactivate)

  安装Django pip install django

    在Django 中创建项目 django-admin startproject learning_log

    创建数据库 pythonv manage.py migrate

    查看项目 python manage.py runserver    (Ctrl + C 关闭)

 

创建应用程序

另开一个终端,切换到manage.py 所在目录,激活虚拟环境

python manage.py startapp learning_logs

  定义模型 Topic(类), 属性:text, date_added, 方法 __str__

  激活模型 配置 settings.py     "Installed_app"中添加“learning_logs”

    修改数据库

      python manage.py makemigrations learning_logs (在migration下自动创建0001_initial.py,在数据库中为Topic创建一个表)

      python manage.py migrate    (Applying)

      修改管理数据的三个步骤: 修改models.py——对 learning_logs 调用makemigrations——让Django 迁移项目

 

  Django管理网站

    1、创建超级用户 python manage.py createsuperuser

    2、向管理网站注册模型 admin.py

        from .models import Topic

        admin.site.register(Topic)

        (可访问 https://localhost:8000/admin/. 输入用户名和密码,可修改添加用户和用户组,管理Topic相关的数据)

    3、添加主题

      创建Chess 和 Rock Climbing 两个主题

  新增模型 Entry (条目)

    属性:topic, text, date_added, 嵌套Meta 类, 方法__str__

  注册模型 Entry

    新增3个条目

  Django shell 交互环境   python manage.py shell 启动 python 解释器

    from learning_logs.models import Topic

    topics = Topic.objects.all()

    for topic in topics:

      print(topic.id, topic)

    t = Topic.objects.get(id=1)

    t.text

    t.date_added

    t.entry_set.all()     通过外键获取数据  相关模型的小写名称、下划线和单词 set

 

创建页面:

学习笔记主页

创建页面三个阶段:定义URL、编写视图和编写模板。

  定义URL

  映射URL:在 learning_log/urls.py    path('admin/', admin.site.urls)

  添加 from django.urls import path, include

       path('', include('learning_logs.urls'))

  新建 learning_logs/urls.py 定义learning_logs 的URL模式

    from django.urls import path

    from . import views

    app_name = 'learning_logs'

    url-patterns = [

        # 主页

        path('', views.index, name = 'index')

    ]

  编写视图 learning_logs/views.py

  def index(request):

    ""学习笔记的主页。""

    return render(request, 'learning_logs/index.html')

  编写模板 learning_log/learning_logs/templates/learning_logs/index.html

 

创建其他页面

模板继承

  父模板 base.html   

    模板标签 {% url 'learning_logs: index '%}  命名空间

    HTML链接用锚标签定义: <a href= "link_url">link text</a>

              块标签: {% block content %} {% endblock content %}

  子模板 index.html

    {% extends "learning_logs/base.html" %}

 

显示所有主题的页面

  1、URL模式

  显示所有主题的URL http://localhost:8000/topics/

  修改learning_logs/urls.py

  #添加显示所有主题。 path('topics', views.topics, name='topics')

  2、视图

  修改learning_logs/views.py

  from .models import Topic

  def topics(request):

    "显示所有的主题。""

    topics = Topic.objects.order_by('date_added')

    context = {'topics': topics}  # 发送给模板的上下文

    return render(request, 'learning_logs/topics.html', context)

  3、模板 topics.html

  项目列表为无序列表, <u1></u1>

  循环  {% for item in list %}

      do something with each item 

     {% endfor %}

  {{ 模板变量 }} 

  <1i></1i> 一个项目列表项,在<u1></u1>内部

  <% empty %> 列表为空时的处理

  

  修改父模板 base.html

  <a href="{% url 'learning_logs: index' %}">Learning Log</a> -

  <a href="{% url 'learning_logs: topics'%}">Topics</a>

 

显示特定主题的页面

1、url 模式 learning_logs/urls.py

  path('topics/<int:topic_id>/', views.topic, name='topic') # 特定主题的详细页面

2、视图 views.py

  def topic(request, topic_id):

    '''显示单个主题及其所有的条目‘’‘

    topic = Topic.objects.get(id=topic_id)

    entries = topic.entry_set.order_by('-date_added')  # -表示指定降序

    context = {'topic': topic, 'entries': entries}

    return render(request, 'learning_logs/topic.html', context)

3、模板

  竖线(|)表示模板过滤器  {{ entry.date_added | date: 'M d, Y H:i '}}

  {entry.text | linebreaks } 将包含换行符的长条目转换为浏览器能够理解的格式

4、将显示所有主题的页面中的主题设置为链接

  修改topics.html

  <a/ href = "{% url 'learning_logs: topic' topic.id%}">{{ topic }}</a>

 

 

  

 

 

 

 

 

  

  

 

    

    

 

 

 

    

 

标签:Topic,logs,入手,18,topics,py,Django,topic,learning
来源: https://www.cnblogs.com/no-one-me/p/14992295.html