red-dinner-66239
10/30/2022, 12:56 PMhundreds-camera-24900
10/30/2022, 9:29 PMwhite-motorcycle-95262
11/01/2022, 12:37 PMwhite-motorcycle-95262
11/01/2022, 12:40 PMbitter-monkey-50309
11/01/2022, 2:58 PMwhite-motorcycle-95262
11/01/2022, 3:08 PMhundreds-camera-24900
11/01/2022, 3:16 PMwhite-motorcycle-95262
11/01/2022, 3:43 PMbest-barista-27777
11/01/2022, 4:50 PMwhite-motorcycle-95262
11/01/2022, 4:57 PMblue-gold-89534
11/01/2022, 6:07 PMblue-gold-89534
11/01/2022, 6:10 PMbreezy-minister-64652
11/02/2022, 1:38 PMbreezy-minister-64652
11/02/2022, 1:41 PMbreezy-minister-64652
11/02/2022, 1:41 PMbitter-monkey-50309
11/02/2022, 2:28 PMbreezy-minister-64652
11/02/2022, 5:20 PMblue-gold-89534
11/04/2022, 8:09 AMbitter-monkey-50309
11/04/2022, 7:46 PMHX-Redirect
header to the file download location. Though I'm not 100% on the order of swaps and redirect headers, but worth a shot.blue-gold-89534
11/05/2022, 8:43 AMhx-redirect
as I found out from the comments here. So what I tried:
- have a tag with a hx-get
to get the response image
- fail: NOK image swapped in
- success: OK image AND a hx-redirect
swapped in
It is probably not that easy. Another thing I saw, but did not try was hx-location
- but the problem I had was, the swapped in hx-redirect
does not do anything. So what can I swap in, that triggers the redirect to the download?bitter-monkey-50309
11/05/2022, 3:53 PMhx-redirect
in your HTML or as a header in the response?blue-gold-89534
11/05/2022, 7:21 PMwide-airport-20686
11/07/2022, 9:02 PMred-france-69804
11/08/2022, 3:16 PMpython
class HTMXCreateOrUpdateMixin(RefreshTableMixin, EmptyResponseMixin):
"""As create and update operations share almost the same logic, it makes sense
to gather this logic into a mixin to avoid repetition.
Note this is a mixin, and can not be used as is like a View.
"""
form_class = None
form_template_name = None
hx_target_form_invalid = None
def get(self, request, *args, **kwargs):
check_not_none(self, "form_class", "form_template_name")
context = self.get_context_data()
return render(request, self.form_template_name, context)
def post(self, request, *args, **kwargs):
check_not_none(self, "form_class", "form_template_name", "hx_target_form_invalid")
form = self.get_form()
context = self.get_context_data(form=form)
if form.is_valid():
obj = form.save()
response = self.build_response(request)
else:
response = render(request, self.form_template_name, context)
response["HX-Reswap"] = "outerHTML"
response["HX-Retarget"] = self.hx_target_form_invalid
return response
red-france-69804
11/08/2022, 3:17 PMpython
class ProposalCreate(LoginRequiredMixin, HTMXCreateView):
model = FakeProposal
form_class = ProposalForm
form_template_name = "proposals/proposal_create_fragment.html"
hx_target_form_invalid = "#fragment_create_proposal"
class ProposalUpdate(LoginRequiredMixin, HTMXUpdateView):
model = FakeProposal
form_class = ProposalForm
form_template_name = "proposals/proposal_update_fragment.html"
hx_target_form_invalid = "#fragment_update_proposal"
red-france-69804
11/08/2022, 3:19 PMwide-airport-20686
11/08/2022, 4:25 PMwide-airport-20686
11/08/2022, 4:25 PMblue-gold-89534
11/08/2022, 7:26 PMfancy-elephant-10660
11/09/2022, 12:01 PM