django学习01

安装django

  • pip install django

pycharm下的django项目

  • django-admin startproject

  • 完成相关配置 (项目名/settings.py文件)

     1. Templates(存放HTML文件的配置)       <-- 告诉Django去哪儿找我的HTML文件   
      'DIRS': [os.path.join(BASE_DIR, 'templates')],
     2. 静态文件(css/js/图片)
     	# 静态文件保存目录的别名
     	STATIC_URL = '/static/'
     	
     	# 所有静态文件(css/js/图片)都放在我下面你配置的文件夹中
     	STATICFILES_DIRS = [
     		os.path.join(BASE_DIR, "static"),
     	]
     3. 注释掉setting.py中 带有 csrf 的那一行(大概45~47行)
    
  • 运行项目:python manage.py runserver

  • 创建app:python3 manage.py startapp app名字

     什么是APP?以及为什么要用APP?
     project  --> 项目
     APP      --> 应用
     方便我们在一个大的Django项目中,管理实现不同的业务功能.
     app配置修改(setting.py中)
     INSTALLED_APPS = [ # 告诉程序我安装了一个app 
     'firstapp.apps.FirstappConfig']
    
  • 介绍几个文件:
    1 urls.py: 记录的是路由与函数的对应关系,告诉服务器不同的路由内容去哪个函数中找
    2 app/views.py: 记录所有的函数
    3 app/models.py: 记录所有的类

ORM

  • ORM的对应关系: 用面向对象的方法使用数据库

    类          --->      数据表
    对象        --->      数据行
    属性        --->      字段
    
  • 使用Django的ORM详细步骤:

     1. 自己动手创建数据库
     	create database 数据库名;
     2. 在Django项目中设置连接数据库的相关配置(告诉Django连接哪一个数据库)
     	# 数据库相关的配置
     	DATABASES = {
     		'default': {
     			'ENGINE': 'django.db.backends.mysql',  # 连接的数据库类型
     			'HOST': '127.0.0.1',  # 连接数据库的地址
     			'PORT': 3306,  # 端口
     			'NAME': "day61",  # 数据库名称
     			'USER': 'root',  # 用户
     			'PASSWORD': '123456'  # 密码
     		}
     	}
     3. 告诉Django用pymysql代替默认的MySQLDB 连接MySQL数据库
     	在项目/__init__.py文件中,写下面两句:
     		import pymysql
     		# 告诉Django用pymysql来代替默认的MySQLdb
     		pymysql.install_as_MySQLdb()
     4. 在app下面的models.py文件中定义一个类,这个类必须继承models.Model
     	class 类名(models.Model):
     		...
     5. 执行两个命令
     	1. python3 manage.py makemigrations
     	2. python3 manage.py migrate
    

出现的两个问题

  • ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

  • AttributeError: ‘str’ object has no attribute 'decode’
    感谢博主的好文章
    解答见:文章https://blog.csdn.net/qq_37067475/article/details/90115641

表的增删查

创建了两个页面:一个是查询数目名称。另外一个添加数目名称

  • 在urls.py中增加两个路由:
    path(‘add_book/’, views.add_book),
    path(‘book_list/’, views.book_list)

  • 写HTML页面,

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>书单</title>
</head>
<body>
<table>
    <thead>
    <tr>
        <td>书id</td>
        <td>书名</td>
    </tr>
    </thead>
    <tbody>
    {% for i in books %}
    <tr>
        <td>{{i.id}}</td>
        <td>{{i.title}}</td>
    </tr>
    {% endfor %}
    </tbody>
    <a href="/add_book/">添加书单</a>
</table>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>添加书目</title>
</head>
<body>
<form action="" method="POST">
    <p>书名:
            <input type="text" name="book">
    </p>
    <p><input type="submit" value="提交"></p>
</form>
</body>
</html>
  • 增加函数页面
def book_list(request):
    ret = models.Book.objects.all()
    return render(request, 'book_list.html', {'books': ret})


def add_book(request):
    if request.method == 'POST':
        new_title = request.POST.get('book')
        models.Book.objects.create(title=new_title)
        return redirect('/book_list/')
    return render(request, 'add_book.html')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值