gpt4 book ai didi

python - 如何将不同的应用程序合并到一个网页中?

转载 作者:行者123 更新时间:2023-12-02 05:40:56 25 4
gpt4 key购买 nike

据我了解,Django 是关于 DRY 和即插即用架构以及可重用应用程序的。我正在尝试使用尽可能正确和整洁的编码来创建我自己的投资组合网站。鉴于此,我试图保持我的应用程序的独立性,这样如果我或其他人愿意,他们可以自己使用它。问题是我已经完全创建了我的应用程序,但我试图将它们映射到一个主页,而不是 blahblah.com/Messaging 和 blahblah.com/Projects

我有两个独立的应用程序,一个是消息传递表单,以便有人可以联系我,另一个是我可以列出要在网站上显示的项目。这是我当前的代码。

我的目录结构

/PortfolioWebsite
/Messaging
/migrations
/templates
/Messaging (namespaced as Django recommends)
Messagingtem.html
__init__.py
admin.py
apps.py
tests.py
forms.py
models.py
tests.py
urls.py
views.py
/PortfolioWebsite
__init.py
asgi.py
settings.py
urls.py
wsgi.py
/Projects
/migrations
/static
/Projects (namespaced as Django recommends)
/images
projectimage1.jpg
projectimage2.jpg
/templates
/Projects (namespaced as Django recommends)
projectbase_list.html
__init__.py
admin.py
apps.py
models.py
tests.py
urls.py
views.py
/templates
base.html (used for bootstrap)
db.sqlite3
manage.py

不知道是否需要,只是想提供一个想法。

我的消息传递 View :

from django.shortcuts import render, redirect
from .forms import MessageForm
from django.views.generic import TemplateView
# Create your views here.
class MessageView(TemplateView):
template_name = 'Messaging\Messagingtem.html'
def get(self, request):
form = MessageForm
return render(request, self.template_name, {'form': form})
def post(self, request):
form = MessageForm(request.POST)
if form.is_valid():
form.save()
return redirect('MessageView')
else:
print(form.errors)
args = {'form': form}
return render(request, self.template_name, args)

消息传递模板:

{% extends "base.html" %}

{% block page_content %}
<div class= 'Container' id="Messagingtem">
<div class= 'form-row'>
<form method="POST">
{% csrf_token %}
<label for='message_text'>Feel free to send me a message!</label>
<div>
<label for='message_text'>
{% if form.errors %}
{% for field in form %}
{% for error in field.errors %}
{{ error|escape }}
{% endfor %}
{% endfor %}
{% endif %}
</label>
</div>
{{form.name_text}}
{{form.email_text}}
{{form.message_text}}
<button type="submit" class='btn btn-Primary'>Submit</button>
<button type="button" class="btn btn-Primary">Close</button>
</form>
</div>
</div>
{% endblock %}

项目 View :

from .models import ProjectBase
from django.shortcuts import render
from django.views.generic.list import ListView

class ProjectListView(ListView):
model = ProjectBase
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
return context

项目模板:

{% extends "base.html" %}
{% load static %}
{% block page_content %}
<div class="Container">
<div class="row">
{% for project in object_list %}
<div class="col-md-4">
<div class="card mb-2">
<img class="card-img-top" src="{% static project.image %}">
<div class="card-body">
<h5 class="card-title">{{ project.title }}</h5>
<p class="card-text">{{ project.description }}</p>
</div>
</div>
</div>
{% endfor %}
</div>
</div>
{% endblock %}

如何在单个主页上获取这些单独的独立应用程序?

最佳答案

您只需从其他应用程序导入模型,然后使用基于类的 View 将信息合并到上下文中。我建议创建一个名为“Main”的新应用程序,然后将其他模型导入其中。

例如(Main/Views.py):

from django.views.generic import View
from Messaging.models import Model1, Model2
from Projects.models import ModelA, ModelB

class IndexView(View):
def get(self, request, *args, **kwargs):
# Generate forms & filter models here, then add to `{}` below
render(request, 'index.html', {})

关于python - 如何将不同的应用程序合并到一个网页中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59921977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com