Насколько я понимаю, 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
Не знаю, если это было необходимо, просто хотел дать идею.
Мой views.py для обмена сообщениями:
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 %}
Представления для проектов:
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 %}
Как я могу получить эти отдельные независимые приложения на одной домашней странице?