1 环境搭建及创建

1) 安装Django

方法一:pip install django

方法二:Pycharm File——settings——Project——Python Interpreter——Python3.9 添加Django安装,设置django的环境变量

3)创建Django项目

命令行至指定目录下,django-admin startproject djangotest

4)启动django 项目

python manage.py runserver

5)创建一个App

django-admin startapp webtest

6)关闭django

ctrl+C

2 数据库连接

1)定义模型:在app中的 models.py 中创建class(一个class对应一张表);

from django.db import models

# Create your models here.

class Topic(models.Model):

    """用户学习的主题"""

    text=models.CharField(max_length=200) #指明字符数据类型,长度200

    date_added=models.DateTimeField(auto_now_add=True) # 创建新主题时,自动创建当前时间

    def __str__(self):

        return  self.text

class Entry(models.Model):

    """学到的有关某个主题的具体知识"""

    topic=models.ForeignKey(Topic,on_delete=models.CASCADE) # 外键 级联删除,即删除Topic时删除Entry

    text=models.TextField()

    date_added=models.DateTimeField(auto_now_add=True)

    class Meta:

        verbose_name_plural='entries'

    def __str__(self):

        return f"{self.text[:50]}..."

2)激活模型:在project下得seetings.py 中的INSTALLED_APPS 中添加app名称 (要将自己app名称放在默认前,这样能覆盖默认应用程序行为)

3)连接自带sqlite数据库

  • 命令行cd 至包含manage.py路径下【每次修改数据后 都需要执行下面两步迁移模型】
  • 生成数据库迁移文件:python manage.py makemigrations appname
  • 迁移修改数据库:python manage.py migrate
  • 使用Django的模型管理网站 维护数据
    • o 创建超级用户

python manage.py createsuperuser

  • 向管理网站注册模型 app路径下 admin.py
# Register your models here.

from .models import Topic #Topic为models中创建的class名

admin.site.register(Topic) #让Django通过管理网站管理模型

admin.site.register(Entry)
  • 管理网站管理 维护用户、用户组以及model

启动网站,访问/admin/

  • 命令行维护数据库

    • o python manage.py shell
from appname.models import classname

classname.objects.all()    #查询该表所有实例
  • 遍历
topics=Topic.objects.all()

for  topic in topics:

print(topic.id,topic)
  • 查询
t=Topic.objects.get(id=1)

t.text
  • 退出
exit()

3 配置路由和页面

1) 映射URL

  • 在project路径urls.py引入from django.urls import path,include,然后再urlpatterns中添加:

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

  • 在app路径下创建urls.py 添加以下代码
"""定义webtest的URL模式"""

from django.urls import path

from . import views

# app_name='webtest' # 区别其他app同名文件,这里有一个问题就是在users中必须存在,在webtest中必须注释掉

urlpatterns=[

    # 主页

    path('',views.index,name='index') #第一参数 路由;第二个参数 views.py中对应函数;第三个参数 指定名称

]

2)搭建view(也就是MVC中的controller)

from django.shortcuts import render # 根据视图提供的数据渲染响应

# Create your views here.

def index(request): # 网站请求查找路由到index,然后将request传递给函数

    """"学习笔记主页"""

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

3)在app路径下创建templates创建index.html

4 Django响应的前后端交互

    • 就是通过{%  %}代码块展示后端数据,具体看 djangotest 项目代码
    • Django中的前后端交互式后台强制解析,然后主要就是登录检测,django.contrib.auth.urls需要在users的urls.py views.py(@ =login_required) 以及在settings.py设置被登录拦截找首页(LOGIN_URL='users:login') # users:login是url配置的路由路径

5 设置应用程序样式

    • 安装django-bootstrap4

pip install django-bootstrap4

  • 项目引用

settings.py 的INSTALLED_APPS 中 添加 'bootstrap4',

  • 在html中直接加class,在head中加入
{% load bootstrap4 %}

{% bootstrap_css %}

 {% bootstrap_javascript jquery='full' %}
  • 表单页 代码如下
{% block content %}

    {% if form.errors %}

      <p>Your username and password didn't match.Please try again.</p>

    {% endif %}

    {% block page_header %}

    <h2>Log in to your account.</h2>

    {% endblock page_header %}

    <form method="post" action="{% url 'users:login' %}" class="form">

        {% csrf_token %}

        {% bootstrap_form form %}

        {% buttons %}

            <button name="submit" class="btn btn-primary">Log in</button>

        {% endbuttons %}

        <input type="hidden" name="next" value="{% url 'index' %}" />

    </form>

  {% endblock content %}
  • 不加样式表单页 代码如下
  {% block content %}

    <p><a href="{% url 'index' %}">index</a></p>

    <p>Add a new topic:</p>

    <form action="{% url 'new_topic' %}" method="post">

      {% csrf_token %}

      {{ form.as_p }}

      <button name="submit">Add topic</button>

    </form>

  {% endblock content %}

6 Django+Mysql+Vue

    • 看到网上那么多教程,我相信Django+Mysql+Vue的过程应该不是那么难了吧

Python 创建一个Django项目的更多相关文章

  1. Django之真正创建一个django项目

    真正创建一个django项目 1 创建Django项目     :new-project 2 创建APP :  python manager.py startapp app01 3 setting 配 ...

  2. 创建一个Django项目

    创建一个django项目: 1. django-admin  startproject student_manage(项目名) 2. cd student_manage python manage.p ...

  3. Python-Django学习笔记(二)-创建一个Django项目与应用

    1.创建一个Django项目 打开cmd命令行,设置好工作目录(cd 目录路径),然后输入 django-admin startproject projectname #必须安装好Django才可以执 ...

  4. 如何创建一个Django项目

    Django 软件框架 软件框架是由其中的各个模块组成,每个模块负责特定的功能,模块与模块之间相互协作来完成软件开发. MVC简介 MVC框架的核心思想是:解耦,让不同的代码块之间降低耦合,增强代码的 ...

  5. 创建一个Django项目的基本步骤

    创建一个Django 的常规步骤 1.寻找一个磁盘目录,比如 e: 2.django-admin startproject ops 3.cd ops 4.python manage.py starta ...

  6. 初学者用pycharm创建一个django项目和一个app时需要注意的事项

    如何新建一个djiango项目: 1.在pycharm中点击File,选择new project,点击djiango,在右面的Location中将untitile改为你的项目名,其余部分注意见下图: ...

  7. 使用Pycharm创建一个Django项目

    在使用python写脚本一段时间后,想尝试使用Django来编写一个python项目,现做以下记录备忘: 1.创建项目 如果本地没有安装与所选python版本对应Django版本,pycharm会自动 ...

  8. 创建一个 Django 项目

    一. 创建项目 其中: 确认项目是否创建成功: 在 manage.py 目录上运行 python manage.py runserver server 启动后,在浏览器访问 http://127.0. ...

  9. Pycharm创建一个Django项目

    1.创建项目 如果本地没有安装与所选python版本对应Django版本,pycharm会自动下载相应的版本: 创建后运行项目,默认页面为http://127.0.0.1:8000/,打开后: 出现上 ...

随机推荐

  1. Pass Infrastructure基础架构(下)

    Pass Infrastructure基础架构(下) pass注册  PassRegistration该类在示例中简要显示了各种pass类型的定义 .该机制允许注册pass类,以便可以在文本pass管 ...

  2. 编译原理-确定有穷自动机(deterministic finite automata ,DFA)

    是一个五元组 M=(S,∑,f,S0,F) 其中 S:有穷状态集 ∑:输入字母表(有穷) f:状态转换函数.f(S,a)=S' 是单值部分映射,每个状态面临一个输入符号时,转入的后继状态是确定的. S ...

  3. 我的N年软件测试感悟

    1.前言 大家好!我是Meng前段时间,很荣幸被一合作伙伴邀请发表一篇文章,主题为"这些年,我所从事软件测试的一些感悟",正好趁着这个机会,我也好好总结一下. 2.测试培训 对于软 ...

  4. 源码级别理解 Redis 持久化机制

    文章首发于公众号"蘑菇睡不着",欢迎来访~ 前言 大家都知道 Redis 是一个内存数据库,数据都存储在内存中,这也是 Redis 非常快的原因之一.虽然速度提上来了,但是如果数据 ...

  5. sql server数据库性能优化之2-避免使用CTE公用表达式的递归【by zhang502219048】

    数据库优化中的一个实例,记录一下: 1. 原来用了CTE公用表达式的递归,reads高达约40万,看查询执行计划,使用了Nested Loops: 2. 优化去掉递归,改用其它方式实现,reads降低 ...

  6. 彻底解决Spring mvc中时间类型的转换和序列化问题

    在使用Spring mvc 进行开发时我们经常遇到前端传来的某种格式的时间字符串无法用java8时间包下的具体类型参数来直接接收.同时还有一系列的序列化 .反序列化问题,在返回前端带时间类型的同样会出 ...

  7. 微信sdk上传图片大小1k,损坏的问题以及微信上传图片需要的配置

    微信公众号的appid和appsecret有问题,会导致上传图片大小为1k这个问题 微信上传图片需要设置公众号的'JS接口安全域名'

  8. 最佳实践丨使用Rancher轻松管理上万资源不是梦!

    前 言 Rancher 作为一个开源的企业级 Kubernetes 集群管理平台.你可以导入现有集群,如 ACK.TKE.EKS.GKE,或者使用 RKE.RKE2.K3s 自定义部署集群. 作为业界 ...

  9. 整合Spring Cloud Stream Binder与GCP Pubsub进行消息发送与接收

    我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 前言 之前的文章<整合Spring Cloud Stream Binder与RabbitMQ进行消息发送与接收& ...

  10. ES6 学习笔记之对象的拓展

    1.属性的简洁表示法 ES6 允许直接写入变量和函数,作为对象的属性和方法.这样书写更加简洁. const foo = 'bar'; const baz = {foo}; baz //{foo: &q ...