在大多数静态页面上使用Django

时间:2019-03-04 23:06:22

标签: javascript html django

我是网络开发的新手,正在为我的游艇俱乐部创建一个网站。因为我们需要具有成为会员的帐户和登录用户,拥有日历,民意调查等的能力……我们决定选择Django,因为它被吹捧为相对易于使用,并且我对Python熟悉。

在我们的index.html中,我们编写了静态html以具有一个菜单系统,该菜单系统基于用户是否已在Django中进行身份验证来显示内容。我遇到的问题是,除非我们离开菜单,否则菜单将按预期工作。菜单将不再显示,而应该在用户访问的所有页面中显示。

我将其放置在我进行Google搜索时index.html链接到的页面之一中,建议这样做应该可以,但不能。

<script src="http://code.jquery.com/jquery.min.js"></script>
<script>
$.get("/", function(data){
    $("#msa_TopNavbar").replaceWith(data);
});
</script>

我完全不知道如何执行此功能。我考虑过将每个页面都创建为项目中的Django应用,即使它只是静态页面也是如此。我还认为也许index.html应该只是一个模板,所有静态页面都将从它继承而来,还包括菜单。

我认识到这对于单个stackoverflow问题可能是一个巨大的问题,但是我不知道该问题与Django相关还是HTML / javascript问题。

是的,我遵循了Django的教程,但是它们并不适合解决此类问题。

1 个答案:

答案 0 :(得分:1)

您正在做很多的额外工作。除了使用jQuery调用获取html数据外,您还可以使用Django的模板系统。

在html页面上:

decLte : (n : Nat) -> (m : Nat) -> Dec (LTE n m)
decLte Z _ = Yes LTEZero
decLte (S _) Z = No (\x => case x of LTEZero impossible ; LTESucc _ impossible)
decLte (S n) (S m) with (decLte n m)
  | Yes ltePrf = Yes (LTESucc ltePrf)
  | No lteContra = No (\(LTESucc p) => lteContra p)

data NatRange : Type where
   In : (l: Nat) -> (u: Nat) -> {auto yep : decLte l u = Yes _} -> NatRange

natRangeEx1 : NatRange
natRangeEx1 = In 500 2100

然后在header.html上放置导航栏html数据。通常,您将为{% include 'header.html' %} ... rest of the page here {% include 'footer.html' %} header.html创建一个文件,并在这些文件上放置每个页面所需的所有脚本/样式表链接,而不是在每个页面的顶部键入相同的html数据。页面上,您只需footer.html

您可能需要阅读Django的templates。有时,使用它们可能会有些困难。

希望有帮助。