zoukankan      html  css  js  c++  java
  • 天天生鲜Django项目——①项目建立及前期步骤

    b站视频连接:https://www.bilibili.com/video/av41733850/

    视频所用django1.8版本,但本人使用django2.2,故写下这篇文章记录所遇错误及步骤。

    虚拟环境建立:mkvirtualenv 虚拟环境名

    #虚拟环境一般自动生成在C:Users电脑用户名Envs目录中,如需自定义设置详情看此篇文章:https://blog.csdn.net/godot06/article/details/81079064

    整体机构:

    创建项目:django-admin startproject  项目名

    创建每个项目中的模块:python manage.py startapp  名称

    设置settings文件:修改所需要的数据库 静态文件目录  模板目录

     1 # BASE_DIR绝对路径
     2 sys.path.insert(0,os.path.join(BASE_DIR,'apps/'))
     3 ......
     4 
     5 
     6 INSTALLED_APPS = [
     7     'django.contrib.admin',
     8     'django.contrib.auth',
     9     'django.contrib.contenttypes',
    10     'django.contrib.sessions',
    11     'django.contrib.messages',
    12     'django.contrib.staticfiles',
    13     'apps.user',   #用户模板
    14     'apps.goods',  #商品模板
    15     'apps.cart',   #购物车模板
    16     'apps.order',  #订单模板
    17     'tinymce',  #富文本编辑器
    18 ]
    19 .......
    20 
    21 
    22 TEMPLATES = [
    23     {
    24         'BACKEND': 'django.template.backends.django.DjangoTemplates',
    25         'DIRS': [os.path.join(BASE_DIR,'templates')],
    26         'APP_DIRS': True,
    27         'OPTIONS': {
    28             'context_processors': [
    29                 'django.template.context_processors.debug',
    30                 'django.template.context_processors.request',
    31                 'django.contrib.auth.context_processors.auth',
    32                 'django.contrib.messages.context_processors.messages',
    33             ],
    34         },
    35     },
    36 ]
    37 .....
    38 DATABASES = {
    39     'default': {
    40         'ENGINE': 'django.db.backends.mysql',
    41         'NAME': '数据库名',
    42         'USER':'用户名',
    43         'PASSWORD':'密码',
    44         'HOST':'id地址',
    45         'PORT':3306,
    46     }
    47 }
    48 ........
    49 
    50 
    51 
    52 # django认证系统使用的模型类
    53 AUTH_USER_MODEL = "user.User"
    54 .......
    55 
    56 
    57 STATIC_URL = '/static/'
    58 # 静态目录
    59 STATICFILES_DIRS = [os.path.join(BASE_DIR,'static')]
    60 
    61 # 富文本编辑器配置
    62 TINYMCE_DEFAULT_CONFIG = {
    63     'theme': 'advanced',
    64     'width': 600,
    65     'height': 400,
    66 }

    数据库远程连接需要设置,详情看这几篇文章:

    https://blog.csdn.net/qq_36242487/article/details/79813582

    https://www.cnblogs.com/renshaoqi/p/10508832.html

    配置项目urls,各个模块urls,需加上app_name,例如:

    from django.urls import path,re_path
    from apps.goods import views
    app_name='goods'
    urlpatterns = [
        path(),
    
    ]

    基础配置完成,即可开始编写代码

     

    编写models模型类

    需要注意的是django2.0以后需要在定义外键on_delete=需要写上,不再是默认参数。

    apps/user/models:

    from django.db import models
    from django.contrib.auth.models import AbstractUser
    from db.base_model import BaseModel
    # Create your models here.
    
    
    class User(AbstractUser, BaseModel):
        '''用户模型类'''
    
        class Meta:
            db_table = 'df_user'
            verbose_name = '用户'
            # 指定模型的复数形式是什么,如果不指定Django会自动在模型名称后加一个’s’
            verbose_name_plural = verbose_name
    
    
    class Address(BaseModel):
        '''地址模型类'''
        user = models.ForeignKey('User', verbose_name='所属账户',on_delete=models.CASCADE)
        receiver = models.CharField(max_length=20, verbose_name='收件人')
        addr = models.CharField(max_length=256, verbose_name='收件地址')
        zip_code = models.CharField(max_length=6, null=True, verbose_name='邮政编码')
        phone = models.CharField(max_length=11, verbose_name='联系电话')
        is_default = models.BooleanField(default=False, verbose_name='是否默认')
    
        class Meta:
            db_table = 'df_address'
            verbose_name = '地址'
            verbose_name_plural = verbose_name

    编写views视图

    apps/user/views

     1 from django.shortcuts import render,redirect
     2 from django.urls import reverse           #from django.core.urlresolvers import reverse:Django更新到2.0后,django2.0 把原来的 django.core.urlresolvers 包 更改为了 django.urls包
     3 
     4 
     5 
     6 from apps.user.models import User
     7 import re
     8 # Create your views here.
     9 
    10 
    11 #/user/register
    12 def register(request):
    13     '''注册页面'''
    14     if request.method == "GET":
    15         #显示注册页面
    16         return render(request,'register.html')
    17     else:
    18         '''进行注册的处理'''
    19         # 接收数据
    20         username = request.POST.get('user_name')
    21         password = request.POST.get('pwd')
    22         email = request.POST.get('email')
    23         allow = request.POST.get('allow')
    24         # 进行数据校验
    25         # all()方法:可迭代的元素
    26         if not all([username, password, email]):
    27             # 数据不完整
    28             return render(request, 'register.html', {'errmas': '数据不完整'})
    29         # 校验邮箱
    30         # if not re.match(r'^[a-z0-9][w.-]@[a-z0-9-]+(.[a-z]{2,5}){1,2}$',email):
    31         if not re.match(r'^[a-z0-9][w.-]*@[a-z0-9-]+(.[a-z]{2,5}){1,2}$', email):
    32             return render(request, 'register.html', {'errmsg': "邮箱格式不正确"})
    33         if allow != 'on':
    34             return render(request, 'register.html', {'errmsg': '请同意协议'})
    35         # 进行业务处理:进行用户注册{不同业务有着不同的处理}
    36         user = User.objects.create_user(username, password, email)
    37         user.is_active = 0
    38         user.save()
    39         # 返回应答,跳转首页
    40         return redirect(reverse('goods:index'))

    所遇错误无非连接数据库、配置文件不同、编写模型类几种,以上均已解决。

    只是解决问题,但其本质还未明白,希望大家互相探讨、答疑解惑。

  • 相关阅读:
    jenkins+jmeter结合使用
    Bean的前身今世&处理器&Aware
    Spring的profile属性
    XML的验证模式
    org.springframework.beans包
    packge-info.java
    字节码解释执行引擎
    invokedynamic指令
    多态方法调用的解析和分派
    运行时栈帧结构
  • 原文地址:https://www.cnblogs.com/xiaotaiyangi/p/10843385.html
Copyright © 2011-2022 走看看