django(二)

参考bilibili.com视频教程 作者:_捷佳_

写一个新的django的app

*自动补全 自己添加模板的功能https://blog.youkuaiyun.com/qq_35556064/article/details/80333083

*pycharm运行django的方法 https://www.cnblogs.com/callyblog/p/7898630.html

1.新建:一个app,在cmd命令行下运行到本地文件夹 使用python manage startapp gally 即可

2.路由:在gally中新建一个urls.py,由于会用到path,则需要导入path库,而且urls仅仅是路由功能,目的是将网页的东西指向该app的view文件里面的程序view.gs,在这一步并不算完成,还需要再主页中的gs功能路由指向本页的路由,相当于双重路由

#gally.urls.py
from django.urls import path
from . import views
urlpatterns = [
    path('', views.gs, name='gs'),
]
#site.urls.py
from django.urls import path,include
urlpatterns = [
    path('gs/', include('gally.urls')),

3.在主项目中注册该app,所以在文件夹里注册的位置为:

gally文件夹里面apps.py里面
class GallyConfig(AppConfig):
    name = 'gally'
# Application definition
#site.settings.py
INSTALLED_APPS = [
    'polls.apps.PollsConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
#new
    'gally.apps.GallyConfig',  #这就是该注册的位置
]

4.在app里写一个model并在app文件夹里注册

#gally.models.py
class Gally(models.Model):
    description=models.CharField(max_length=50)  
    #这是django的一个模块功能,顾名思义,全是写字的

#gally.admin.py
from .models import Gally  #记住这里是.models

admin.site.register(Gally)

5.makemigrations和migrate的使用

在cmd下 python manage.py ***使用这两个就ok

6启用一个简单的个人主页

大体框架做完了,逐渐完善功能,则需要再该app的views和html上做工作了

#view.py
from .models import Gally   #同级导入
def gs(request):
    gallys=Gally.objects  #将.models上图中的class gally对象导入,将该对象所有属性都给gallys
    return render(request,"gs_home.html",{'gallys':gallys}) #同时将字典参数也传给html页面
<body>
{% for gally in gallys.all %}   #python的语句使用迭代对象
{{gally.description}}
<br>
{% endfor %}
</body>
</html>

7.添加图像路径

from django.conf.urls.static import static   #标注格式
from django.conf import  settings  #在settings里面设置了MEDIA_URL,MEDIA_ROOT两项,下面就可以引用

urlpatterns = [
        ......
] + static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT) #static是个列表,添加这两个固定就可以,固定操作

#settings.py里面配置上两个函数
MEDIA_URL  = '/media/'
MDDIA_ROOT = os.path.join(BASE_DIR, 'media')#固定格式即可,记住OS.path

 

### Django 次开发最佳实践与可扩展的项目结构 在进行Django项目的次开发时,遵循良好的设计原则和最佳实践可以显著提高代码的可维护性和扩展性。以下是关于Django次开发的最佳实践以及可扩展的项目结构的相关建议。 #### 1. 模块化设计 将项目划分为多个独立的应用程序(App),每个应用程序专注于特定的功能模块[^2]。例如,在博客系统中,可以创建`blog`、`config`、`comment`等应用程序来分别处理文章管理、配置设置和评论功能。通过这种方式,可以确保每个模块的功能清晰且易于维护。 #### 2. 自定义用户模型 如果需要对用户系统进行扩展,建议在项目初始化时定义一个自定义用户模型,并将其设置为默认用户模型。可以通过继承`AbstractUser`类实现这一目标。此外,为了支持更多的用户信息字段(如邮箱、手机号码等),可以参考`MyUserCreationForm`的设计思路[^4]。 #### 3. 配置文件优化 `settings.py`是Django项目的配置中心,但随着项目规模的增长,单一的配置文件可能会变得难以管理。推荐使用分环境配置的方法,即将不同环境(开发、测试、生产)的配置分离到不同的文件中。例如,可以创建`settings/dev.py`和`settings/prod.py`分别用于开发和生产环境[^3]。 #### 4. 数据库迁移管理 数据库迁移是Django项目中非常重要的一部分。在进行次开发时,应确保每次修改模型后都生成相应的迁移文件,并执行迁移操作以更新数据库结构。可以通过`manage.py makemigrations`和`manage.py migrate`命令完成这些任务[^3]。 #### 5. 可扩展的项目目录结构 以下是一个推荐的Django项目目录结构示例,旨在支持项目的长期扩展和维护: ```plaintext myproject/ ├── myproject/ # 项目主目录 │ ├── __init__.py # 标识Python包 │ ├── asgi.py # ASGI应用入口点 │ ├── settings/ # 分环境配置目录 │ │ ├── base.py # 基础配置 │ │ ├── dev.py # 开发环境配置 │ │ └── prod.py # 生产环境配置 │ ├── urls.py # URL路由配置 │ └── wsgi.py # WSGI应用入口点 ├── apps/ # 应用程序目录 │ ├── blog/ # 博客应用 │ ├── config/ # 配置应用 │ └── comment/ # 评论应用 ├── templates/ # 模板文件目录 ├── static/ # 静态文件目录 ├── media/ # 媒体文件目录 ├── manage.py # 项目管理工具 └── requirements.txt # Python依赖列表 ``` #### 6. 使用第三方库增强功能 Django生态系统中有许多优秀的第三方库可以帮助加速开发过程并提升项目的功能性。例如: - `django-rest-framework`:用于构建RESTful API。 - `django-allauth`:提供社交登录和账户管理功能。 - `django-celery`:支持异步任务处理。 #### 7. 测试驱动开发 在进行次开发时,编写单元测试和集成测试是非常重要的。这不仅可以帮助发现潜在的问题,还能确保新功能不会破坏现有功能。Django自带了强大的测试框架,可以轻松地编写和运行测试用例[^1]。 --- ### 示例代码:自定义用户模型 以下是一个简单的自定义用户模型示例,展示了如何扩展默认用户模型以支持额外的字段。 ```python # models.py from django.contrib.auth.models import AbstractUser class MyUser(AbstractUser): mobile = models.CharField(max_length=15, blank=True, null=True) weChat = models.CharField(max_length=50, blank=True, null=True) qq = models.CharField(max_length=20, blank=True, null=True) def __str__(self): return self.username ``` ```python # forms.py from django.contrib.auth.forms import UserCreationForm from .models import MyUser class MyUserCreationForm(UserCreationForm): class Meta(UserCreationForm.Meta): model = MyUser fields = UserCreationForm.Meta.fields + ('email', 'mobile', 'weChat', 'qq') ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值