Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django中单个html页面中的多个应用程序和视图_Html_Django - Fatal编程技术网

Django中单个html页面中的多个应用程序和视图

Django中单个html页面中的多个应用程序和视图,html,django,Html,Django,我对Django比较陌生,不太了解它。出于某种原因,尽管每个人都说Django文档令人惊讶,但我不明白它到底是什么 由于某些原因,我无法将来自2个不同应用程序的模型、模型和视图集成到我的home.html页面中 我想做的是以表格的形式注册一份时事通讯。它在jobs应用程序中,jobs还包括我在主页上显示的“jobs”和我也想在HTML主页上显示的博客文章 我不认为有必要创建一个新的应用程序,因为它不是一个我将大量重用的模型,而且由于限制,现成的解决方案不符合我的喜好 我试图解决问题所在,最终意识

我对Django比较陌生,不太了解它。出于某种原因,尽管每个人都说Django文档令人惊讶,但我不明白它到底是什么

由于某些原因,我无法将来自2个不同应用程序的模型、模型和视图集成到我的home.html页面中

我想做的是以表格的形式注册一份时事通讯。它在jobs应用程序中,jobs还包括我在主页上显示的“jobs”和我也想在HTML主页上显示的博客文章

我不认为有必要创建一个新的应用程序,因为它不是一个我将大量重用的模型,而且由于限制,现成的解决方案不符合我的喜好

我试图解决问题所在,最终意识到它位于urlpatterns下的url.py文件中

以下是我的代码:

项目url.py

from django.conf import settings
from django.contrib import admin
from django.urls import path, include
from django.conf.urls.static import static
import jobs.views
import blog.views
import compound.views
from django.conf.urls import url, include
from markdownx import urls as markdownx

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', blog.views.all_blogs_on_home, name='home'),
    path('blog/', include('blog.urls')),
    path('', include('jobs.urls')),
    path('compound/', compound.views.index),
    url(r'^markdownx/', include(markdownx))

] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
blog url.py

from django.urls import path
from . import views
from . import models
from django.conf.urls import url

urlpatterns = [
    path('', views.allblogs, name='allblogs'),
    path('<int:blog_title>/', views.detail, name='detail'),
]
这就是我对我的观点的看法(这是我发现的在不创建新应用程序的情况下整合时事通讯的唯一方法):

jobs/views.py:

def all_blogs_on_home(request, template='jobs/home.html'):
    context = {
        'blogs': Blog.objects.all().order_by('-pub_date'),
        'jobs': Job.objects.all(),
        'get_email': get_email,
    }
    return render(request, template, context)
def home(request):
    jobs = Job.objects
    return render(request, 'jobs/home.html', {'jobs': jobs})


def get_email(request):
    # if this is a POST request we need to process the form data
    if request.method == 'POST':
        # create a form instance and populate it with data from the request:
        form = SignupForm(request.POST)
        # check whether it's valid:
        if form.is_valid():
            # process the data in form.cleaned_data as required
            # ...
            # redirect to a new URL:
            return HttpResponseRedirect('/email-field/')

    # if a GET (or any other method) we'll create a blank form
    else:
        form = SignupForm()

    return render(request, 'jobs/home.html', {'form': form})
在home.html中,我只需添加以下内容:

{{ form }}

如果我理解正确,您希望使用home上的
all\u blogs\u查看和
jobs/home.html
模板呈现两个模型列表和一个表单

要实现这一目标,您应该具备以下条件:

def home上的所有博客(请求,template='jobs/home.html'):
如果request.method==“POST”:
表单=注册表单(request.POST)
如果form.is_有效():
#在这里输入表单处理代码
返回HttpResponseRedirect(“/email field/”)
#如果使用GET(或任何其他方法),我们将创建一个空白表单
其他:
表单=注册表单()
上下文={
'blogs':Blog.objects.all().order_by('-pub_date'),
“作业”:Job.objects.all(),
“形式”:形式,
}
返回呈现(请求、模板、上下文)

在模板
jobs/home.html
中,只需像以前一样呈现博客和作业。您可以使用
{{form.as{p}}
{{form}}
来执行以下操作。不要忘记将
/email field/
url添加到您的
url.py
文件中。

非常感谢!你的解决方案基本上解决了我的问题!