/ / AttributeError 'str' Objekt hat kein Attribut 'Pfad' - django, django-klassenbasierte Ansichten, attributeerror

AttributeError 'str' Objekt hat kein Attribut 'Pfad' - django, django-klassenbasierte Ansichten, attributeerror

Ich habe dafür ein Inline-Formset implementiertProjekt, und wenn ich zu dieser Ansicht gehe, zeigt es den Fehler an, der im Titel angegeben wird. Zuvor hat mein Teamkollege eine Navigation mit Tabs auf der Seite mit bootstrap.js implementiert. Damit die Registerkarten funktionieren, sucht sie nach einer Anforderung für jede Ansicht. Ich habe das gleiche Problem bereits zuvor gelöst, aber behoben, da es keine klassenbasierte Ansicht war.

Jetzt zeigt es den gleichen Fehler, aber von aandere Ansicht, und diesmal ist es von einer CreateView, und es gibt nicht wirklich eine Anfrage, die Bootstrap sucht. Ich bin mir nicht sicher, wie ich dieses Problem angehen soll. Kann mir jemand einen guten Anfang vorschlagen, um das Problem zu beheben?

Übrigens bin ich in Django nicht so erfahren, lerne noch, aber genug, um die Winkel und Winkel zu kennen.

Ein Teil des Codes:

views.py (Auszug, etwas Code von Kevin Dias geliehen)

class AddRecipe(CreateView):
template_name = "addrecipe.html"
model = Recipes
form_class = RecipeForm
success_url = "/success/"

def get(self, request, *args, **kwargs):
self.object = None
form_class = self.get_form_class()
form = self.get_form(form_class)
ingredient_form = IngredientFormSet()
instruction_form = InstructionFormSet()
return self.render_to_response(
self.get_context_data(form = form,
ingredient_form = ingredient_form,
instruction_form = instruction_form),)

def post(self, request, *args, **kwargs):
self.object = None
form_class = self.get_form_class()
form = self.get_form(form_class)
ingredient_form = IngredientFormSet(self.request.POST)
instruction_form = InstructionFormSet(self.request.POST)
if (form.is_valid() and ingredient_form.is_valid() and instruction_form.is_valid()):
return self.form_valid(form, ingredient_form, instruction_form)
else:
return self.form_invalid(form, ingredient_form, instruction_form)

def form_valid(self, form, ingredient_form, instruction_form):
self.object = form.save()
ingredient_form.instance = self.object
ingredient_form.save()
instruction_form.instance = self.object
instruction_form.save()
return HttpResponseRedirect(self.get_success_url())


def form_invalid(self, form, ingredient_form, instruction_form):
return self.render_to_response(
self.get_context_data(form = form,
ingredient_form = ingredient_form,
instruction_form = instruction_form))

Hier ist der Code für Tabs in base.html

{% load tabs %}
<div class="collapse navbar-collapse" id="navbar-collapse-1">
<ul class="nav navbar-nav">
<li class="{% active request "^/$" %}"><a href="/">Home</a></li>
<li class="{% active request "^/register/" %}"><a href="/register/">Register</a></li>
<li class="{% active request "^/myrecipes/" %}"><a href="/myrecipes/">My Recipes</a></li>
</ul>

<form class="navbar-form navbar-right" role="search">
<div class="form-group">
<input type="text" class="form-control" placeholder="Search">
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>

</div>

die Ansicht in urls.py

url(r"^addrecipe/", login_required(AddRecipe.as_view()),name="addrecipe", ),

Ich bin mir nicht ganz sicher, ob das alles ist, was nötig ist, um das zu lösen. Fühlen Sie sich frei zu kommentieren, wenn jemand weitere Ausarbeitung wünscht. Danke!

Antworten:

1 für die Antwort № 1

Hinzufügen django.core.context_processors.request zu deinem TEMPLATE_CONTEXT_PROCESSORS im settings.py

Der Rest des Codes sieht gut aus.


0 für die Antwort № 2

Sie haben keinen Zugriff auf das Anforderungsobjekt in Ihrem benutzerdefinierten Schablonentag wie in Ansichten. Hier finden Sie, um Ihr Problem zu lösen - Zugriffsanfrage in django benutzerdefinierten Vorlagen-Tags