基于conda虚拟环境的Django安装、终端和PyCharm专业版的项目创建以及利用Django快速搭建一个网站

    • 安装Django

  • 在终端输入

conda activate py39
conda install django

1.1检验是否安装成功

python
>>> import django
>>> django.get_version()
'4.1.5'

2.创建项目

  • django项目中会有一些默认的文件和默认的文件夹

2.1终端

  • 因为我是在环境py39下载的django,所以下载后/Users/qianying/miniconda3/envs/py39/bin/目录下会有django-admin

  • 现在进入想要创建项目所在目录,比如/Users/qianying/PycharmProjects/MyDjango,然后在终端输入

django-admin startproject 项目名称
  • 创建好后,/Users/qianying/PycharmProjects/MyDjango目录下就有mysite文件夹了。

2.2PyCharm(专业版)

  • 点击【new project】

  • 选择Django项目,然后根据自己的情况开始配置。配置好后,点击【create】

  • 创建好后,有两个文件夹

2.3两种方法对比

  • 命令行版:常见的项目是标准的

  • PyCharm版:在标准的基础上添加了templates目录

  • 两种方法的setting.py内容因为templayes目录的原因不一样

2.3默认项目文件介绍

├── mysite
│   ├── manage.py        【项目的管理,启动项目,创建app,数据库的管理】【不要动】
│   └── mysite
│       ├── __init__.py
│       ├── asgi.py        【异步,接收网络请求】【不要动】
│       ├── settings.py        【项目的配置文件】【常常操作】
│       ├── urls.py        【URL与函数的对应关系】【常常操作】
│       └── wsgi.py        【同步,接收网络请求】【不要动】
└── mysite2
    ├── manage.py
    ├── mysite2
    │   ├── __init__.py
    │   ├── asgi.py
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    └── templates

3.APP

  • 一个项目一般创建一个app

  • 打开Pycharm的terminal,输入

python manage.py startapp app01

app01目录下的文件介绍

app01
├── __init__.py
├── admin.py        【固定,不用动】django默认提供了admin后台管理。
├── apps.py        【固定,不用动】app启动类
├── migrations        【固定,不用动】数据库变更记录
│   └── __init__.py
├── models.py        【重要】对数据库操作
├── tests.py        【固定,不用动】单元测试
└── views.py        【重要】函数

4.快速上手Django

4.1注册app【settings.py】

  • 打开app01文件夹下面的app.py文件,发现里面有App01Config类

  • 打开settings.py文件找到如图所示位置,加入

'app01.apps.App01Config'

4.2编写URL和视图函数对应关系【urls.py】

from app01 import views

urlpatterns = [
    # path('admin/', admin.site.urls),
    # www.xxx/com/index -> views文件里找index函数
    path('index/', views.index),
]

4.3编写视图函数【views.py】

from django.shortcuts import render, HttpResponse


# Create your views here.
def index(request):
    return HttpResponse("欢迎使用~")

4.4启动Django项目

  • 命令行启动

python manage.py runserver
  • pycharm启动

  • 运行后,发现和命令行是一样的

  • 没有这个工具栏的,点击【视图】-【外观】-【工具栏】

4.5再写一个页面

  • 只需要修改urls.py和views.py文件即可

4.6templates模板

  • 在app01目录下创建templates目录,并在app01/templates/目录下创建html文件

  • 修改一下views.py文件的函数

def user_list(request):
    # 1.如果使用的是pycharm创建的项目,由于它根目录下有templates目录
    # 它会首先到根目录下的templates目录中寻找html文件
    # 2.否则,会去app01目录下的templates目录寻找user_list.html文件
    # (会根据app的注册顺序,逐一去他们的templates目录中寻找)
    return render(request, "user_list.html")

4.7静态文件

在开发过程中,一般将

  • 图片

  • CSS

  • JS

当作静态文件处理。

  • 在app01目录下创建static文件夹,然后再依次创建如下文件夹

  • user_list.html

{%  load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="{% static 'plugins/bootstrap-3.4.1-dist/css/bootstrap-theme.css' %}">
</head>
<body>
    <h1>用户列表</h1>
    <img src="{%  static 'img/1.jpeg' %}" style="width: 300px" alt="">
    <div>
        <input type="button" class="btn btn-success" value="新建用户">
    </div>
<script src="{% static 'js/jquery-3.6.3.min.js' %}"></script>
<script src="{% static 'plugins/bootstrap-3.4.1-dist/js/bootstrap.js' %}"></script>
</body>
</html>

5.模板语法

本质上:在html文件中写一些占位符,由数据对这些占位符进行替换和处理。

templates目录下的html文件是含有模板语法的html

视图函数的render内部:

  • 读取含有模板语法的html文件

  • 内部进行渲染(模板语法执行并替换数据)

  • 最终得到只包含html标签的字符串

  • 将(渲染)替换完成的字符串返回给用户浏览器

def tpl(request):
    name = 'qy'
    roles = ['管理员', 'ceo', '保安']
    user_info = {"name": "qyqy", "salary": 10000, "role": "ceo"}
    data_list = [
        {"name": "qyqy", "salary": 10000, "role": "ceo"},
        {"name": "qyqy1", "salary": 10000, "role": "ceo"},
        {"name": "qyqy2", "salary": 10000, "role": "ceo"},
        {"name": "qyqy3", "salary": 10000, "role": "ceo"}
    ]
    return render(request, "tpl.html", {'n1': name, "n2": roles, "n3": user_info, "n4": data_list})
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>模板语言学习</h1>
<div>{{ n1 }}</div>
<div>{{ n2 }}</div>

<div>{{ n2.0 }}</div>
<div>{{ n2.1 }}</div>
<div>{{ n2.2 }}</div>

{#for语句#}
<div>
    {% for item in n2 %}
        <span>{{ item }}</span>
    {% endfor %}
</div>
{#分隔线#}
<hr/>
{#字典#}
{{ n3 }}
{{ n3.name }}
{{ n3.salary }}
{{ n3.role }}

<ul>
{#items:键值对,values:值,keys:键#}
    {% for k, v in n3.items %}
        <li>{{ k }} = {{ v }}</li>
    {% endfor %}
</ul>
<ul>
    {% for v in n3.values %}
        <li>{{ v }}</li>
    {% endfor %}
</ul>
<ul>
    {% for k in n3.keys %}
        <li>{{ k }}</li>
    {% endfor %}
</ul>

<hr/>
{#列表嵌套字典#}
{{ n4.1 }}
{{ n4.1.name }}
{{ n4.1.salary }}

{% for item in n4 %}
    <div>{{ item.name }} {{ item.salary }}</div>
{%  endfor %}

<hr/>
{#条件语句#}
{% if n1 == 'qy' %}
    <h1>hahaha</h1>
{%  else %}
    <h1>hehehe</h1>
{% endif %}
</body>
</html>

案例:伪新闻中心

  • veiws.py

def news(request):
    # 1.定义一些新闻(字典或者列表) 或 去数据库 或 网络请求去获取联通新闻
    # 第三方模块requests
    import requests
    import json
    # 设置url
    url = "http://www.chinaunicom.com.cn/api/article/NewsByIndex/2/2023/01/news"
    # 设置UA伪装
    headers = {
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.2 Safari/605.1.15"
    }
    res = requests.get(url=url, headers=headers)
    data_list = res.json()
    print(data_list)
    return render(request, "news.html", {"news_list": data_list})
  • news.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>新闻中心</h1>
<ul>
    {% for item in news_list %}
    <li>标题:{{ item.news_title }} 时间:{{ item.post_time }}</li>
    {% endfor %}
</ul>
</body>
</html>
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qyqyqyi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值